{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "import random"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal_length</th>\n",
       "      <th>sepal_width</th>\n",
       "      <th>petal_length</th>\n",
       "      <th>petal_width</th>\n",
       "      <th>species</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>110</td>\n",
       "      <td>6.5</td>\n",
       "      <td>3.2</td>\n",
       "      <td>5.1</td>\n",
       "      <td>2.0</td>\n",
       "      <td>virginica</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>138</td>\n",
       "      <td>6.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>4.8</td>\n",
       "      <td>1.8</td>\n",
       "      <td>virginica</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>67</td>\n",
       "      <td>5.8</td>\n",
       "      <td>2.7</td>\n",
       "      <td>4.1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>versicolor</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>26</td>\n",
       "      <td>5.0</td>\n",
       "      <td>3.4</td>\n",
       "      <td>1.6</td>\n",
       "      <td>0.4</td>\n",
       "      <td>setosa</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>119</td>\n",
       "      <td>6.0</td>\n",
       "      <td>2.2</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.5</td>\n",
       "      <td>virginica</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>107</td>\n",
       "      <td>7.3</td>\n",
       "      <td>2.9</td>\n",
       "      <td>6.3</td>\n",
       "      <td>1.8</td>\n",
       "      <td>virginica</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>64</td>\n",
       "      <td>5.6</td>\n",
       "      <td>2.9</td>\n",
       "      <td>3.6</td>\n",
       "      <td>1.3</td>\n",
       "      <td>versicolor</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>92</td>\n",
       "      <td>5.8</td>\n",
       "      <td>2.6</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1.2</td>\n",
       "      <td>versicolor</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>146</td>\n",
       "      <td>6.3</td>\n",
       "      <td>2.5</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.9</td>\n",
       "      <td>virginica</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>113</td>\n",
       "      <td>5.7</td>\n",
       "      <td>2.5</td>\n",
       "      <td>5.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>virginica</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     sepal_length  sepal_width  petal_length  petal_width     species\n",
       "110           6.5          3.2           5.1          2.0   virginica\n",
       "138           6.0          3.0           4.8          1.8   virginica\n",
       "67            5.8          2.7           4.1          1.0  versicolor\n",
       "26            5.0          3.4           1.6          0.4      setosa\n",
       "119           6.0          2.2           5.0          1.5   virginica\n",
       "107           7.3          2.9           6.3          1.8   virginica\n",
       "64            5.6          2.9           3.6          1.3  versicolor\n",
       "92            5.8          2.6           4.0          1.2  versicolor\n",
       "146           6.3          2.5           5.0          1.9   virginica\n",
       "113           5.7          2.5           5.0          2.0   virginica"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris = pd.read_csv(r\"data_set\\iris.csv\")\n",
    "iris.sample(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal_length</th>\n",
       "      <th>sepal_width</th>\n",
       "      <th>petal_length</th>\n",
       "      <th>petal_width</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>34</td>\n",
       "      <td>4.9</td>\n",
       "      <td>3.1</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>53</td>\n",
       "      <td>5.5</td>\n",
       "      <td>2.3</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>26</td>\n",
       "      <td>5.0</td>\n",
       "      <td>3.4</td>\n",
       "      <td>1.6</td>\n",
       "      <td>0.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>134</td>\n",
       "      <td>6.1</td>\n",
       "      <td>2.6</td>\n",
       "      <td>5.6</td>\n",
       "      <td>1.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>132</td>\n",
       "      <td>6.4</td>\n",
       "      <td>2.8</td>\n",
       "      <td>5.6</td>\n",
       "      <td>2.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>99</td>\n",
       "      <td>5.7</td>\n",
       "      <td>2.8</td>\n",
       "      <td>4.1</td>\n",
       "      <td>1.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>104</td>\n",
       "      <td>6.5</td>\n",
       "      <td>3.0</td>\n",
       "      <td>5.8</td>\n",
       "      <td>2.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>87</td>\n",
       "      <td>6.3</td>\n",
       "      <td>2.3</td>\n",
       "      <td>4.4</td>\n",
       "      <td>1.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>4.9</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>127</td>\n",
       "      <td>6.1</td>\n",
       "      <td>3.0</td>\n",
       "      <td>4.9</td>\n",
       "      <td>1.8</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     sepal_length  sepal_width  petal_length  petal_width\n",
       "34            4.9          3.1           1.5          0.1\n",
       "53            5.5          2.3           4.0          1.3\n",
       "26            5.0          3.4           1.6          0.4\n",
       "134           6.1          2.6           5.6          1.4\n",
       "132           6.4          2.8           5.6          2.2\n",
       "99            5.7          2.8           4.1          1.3\n",
       "104           6.5          3.0           5.8          2.2\n",
       "87            6.3          2.3           4.4          1.3\n",
       "1             4.9          3.0           1.4          0.2\n",
       "127           6.1          3.0           4.9          1.8"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris = iris.drop(\"species\", axis=1)\n",
    "iris.sample(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.scatterplot(data=iris, x=\"petal_length\", y=\"petal_width\", color=\"black\")\n",
    "plt.xlabel('x_petal_length')\n",
    "plt.ylabel('y_petal_width')\n",
    "plt.savefig('2d_data_needing_clustering.png', dpi=300, bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "class Center():\n",
    "\n",
    "    def __init__(self, data):\n",
    "        \"\"\"generates a random center inside the region bounded by the data\"\"\"\n",
    "        num_dimensions = data.shape[1]\n",
    "        self.coordinates = np.array([0.0] * num_dimensions)\n",
    "        for i in range(num_dimensions):\n",
    "            min_value = np.min(data[:, i])\n",
    "            max_value = np.max(data[:, i])\n",
    "            random_value = random.uniform(min_value, max_value)\n",
    "            self.coordinates[i] = random_value\n",
    "\n",
    "    def __str__(self):\n",
    "        return str(self.coordinates)\n",
    "\n",
    "    def __repr__(self):\n",
    "        return repr(self.coordinates)\n",
    "\n",
    "    def dist(self, data_point):\n",
    "        return np.sqrt(np.sum((self.coordinates - data_point)**2, axis=1))\n",
    "\n",
    "    def dist_sq(self, data_point):\n",
    "        return np.sum((self.coordinates - data_point)**2, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "c1 = Center(iris.loc[:, ['petal_length', 'petal_width']].values)\n",
    "c2 = Center(iris.loc[:, ['petal_length', 'petal_width']].values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "# force coordinates from the lecture demo\n",
    "c1.coordinates = np.array([2.52364007, 2.31040024])\n",
    "c2.coordinates = np.array([6.53276402, 1.211463])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_centers_and_black_data(iris, centers):\n",
    "    sns.scatterplot(data=iris, x=\"petal_length\", y=\"petal_width\", color=\"black\")\n",
    "    for center in centers:\n",
    "        plt.plot(center.coordinates[0],\n",
    "                 center.coordinates[1],\n",
    "                 '*',\n",
    "                 markersize=10)\n",
    "    plt.xlabel('petal_length')\n",
    "    plt.ylabel('petal_width')\n",
    "    legend_text = ['c' + str(i) for i in range(1, len(centers) + 1)]\n",
    "    legend_text.append('data')\n",
    "    plt.legend(legend_text)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_centers_and_black_data(iris, (c1, c2))\n",
    "plt.savefig('2means_demo_initial_placement.png', dpi=300, bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_cluster_number(dists):\n",
    "    return np.where(dists == np.min(dists))[0][0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal_length</th>\n",
       "      <th>sepal_width</th>\n",
       "      <th>petal_length</th>\n",
       "      <th>petal_width</th>\n",
       "      <th>dist1</th>\n",
       "      <th>dist2</th>\n",
       "      <th>cluster</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>5.1</td>\n",
       "      <td>3.5</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>2.390890</td>\n",
       "      <td>5.231474</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>4.9</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>2.390890</td>\n",
       "      <td>5.231474</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>4.7</td>\n",
       "      <td>3.2</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.2</td>\n",
       "      <td>2.439484</td>\n",
       "      <td>5.329623</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>4.6</td>\n",
       "      <td>3.1</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.2</td>\n",
       "      <td>2.345555</td>\n",
       "      <td>5.133398</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>5.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>2.390890</td>\n",
       "      <td>5.231474</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>5.4</td>\n",
       "      <td>3.9</td>\n",
       "      <td>1.7</td>\n",
       "      <td>0.4</td>\n",
       "      <td>2.080387</td>\n",
       "      <td>4.900416</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>4.6</td>\n",
       "      <td>3.4</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.3</td>\n",
       "      <td>2.303101</td>\n",
       "      <td>5.213064</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>5.0</td>\n",
       "      <td>3.4</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.2</td>\n",
       "      <td>2.345555</td>\n",
       "      <td>5.133398</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>4.4</td>\n",
       "      <td>2.9</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>2.390890</td>\n",
       "      <td>5.231474</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>4.9</td>\n",
       "      <td>3.1</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.1</td>\n",
       "      <td>2.435920</td>\n",
       "      <td>5.154034</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   sepal_length  sepal_width  petal_length  petal_width     dist1     dist2  \\\n",
       "0           5.1          3.5           1.4          0.2  2.390890  5.231474   \n",
       "1           4.9          3.0           1.4          0.2  2.390890  5.231474   \n",
       "2           4.7          3.2           1.3          0.2  2.439484  5.329623   \n",
       "3           4.6          3.1           1.5          0.2  2.345555  5.133398   \n",
       "4           5.0          3.6           1.4          0.2  2.390890  5.231474   \n",
       "5           5.4          3.9           1.7          0.4  2.080387  4.900416   \n",
       "6           4.6          3.4           1.4          0.3  2.303101  5.213064   \n",
       "7           5.0          3.4           1.5          0.2  2.345555  5.133398   \n",
       "8           4.4          2.9           1.4          0.2  2.390890  5.231474   \n",
       "9           4.9          3.1           1.5          0.1  2.435920  5.154034   \n",
       "\n",
       "   cluster  \n",
       "0        0  \n",
       "1        0  \n",
       "2        0  \n",
       "3        0  \n",
       "4        0  \n",
       "5        0  \n",
       "6        0  \n",
       "7        0  \n",
       "8        0  \n",
       "9        0  "
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris[\"dist1\"] = c1.dist(iris[[\"petal_length\", \"petal_width\"]])\n",
    "iris[\"dist2\"] = c2.dist(iris[[\"petal_length\", \"petal_width\"]])\n",
    "iris[\"cluster\"] = iris[[\"dist1\", \"dist2\"]].apply(get_cluster_number, axis=1)\n",
    "iris.head(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    79\n",
       "1    71\n",
       "Name: cluster, dtype: int64"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris[\"cluster\"].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_centers_and_colorized_data(iris, centers):\n",
    "    current_palette = sns.color_palette()[0:len(centers)]\n",
    "    sns.scatterplot(data=iris,\n",
    "                    x=\"petal_length\",\n",
    "                    y=\"petal_width\",\n",
    "                    hue=\"cluster\",\n",
    "                    palette=current_palette)\n",
    "    for center in centers:\n",
    "        plt.plot(center.coordinates[0],\n",
    "                 center.coordinates[1],\n",
    "                 '*',\n",
    "                 markersize=10)\n",
    "    plt.xlabel('petal_length')\n",
    "    plt.ylabel('petal_width')\n",
    "    legend_text = ['c' + str(i) for i in range(1, len(centers) + 1)]\n",
    "    plt.legend(legend_text)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_centers_and_colorized_data(iris, (c1, c2))\n",
    "plt.savefig('2means_demo_initial_placement_colored.png',\n",
    "            dpi=300,\n",
    "            bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "average_c1_length = np.mean(iris[iris[\"cluster\"] == 0])[\"petal_length\"]\n",
    "average_c1_width = np.mean(iris[iris[\"cluster\"] == 0])[\"petal_width\"]\n",
    "c1.coordinates = (average_c1_length, average_c1_width)\n",
    "\n",
    "average_c2_length = np.mean(iris[iris[\"cluster\"] == 1])[\"petal_length\"]\n",
    "average_c2_width = np.mean(iris[iris[\"cluster\"] == 1])[\"petal_width\"]\n",
    "c2.coordinates = (average_c2_length, average_c2_width)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_centers_and_black_data(iris, (c1, c2))\n",
    "plt.savefig('2means_demo_center_position_2.png', dpi=300, bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "iris[\"dist1\"] = c1.dist(iris[[\"petal_length\", \"petal_width\"]])\n",
    "iris[\"dist2\"] = c2.dist(iris[[\"petal_length\", \"petal_width\"]])\n",
    "iris[\"cluster\"] = iris[[\"dist1\", \"dist2\"]].apply(get_cluster_number, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_centers_and_colorized_data(iris, (c1, c2))\n",
    "plt.savefig('2means_demo_center_position_2_colorized.png',\n",
    "            dpi=300,\n",
    "            bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "average_c1_length = np.mean(iris[iris[\"cluster\"] == 0])[\"petal_length\"]\n",
    "average_c1_width = np.mean(iris[iris[\"cluster\"] == 0])[\"petal_width\"]\n",
    "c1.coordinates = (average_c1_length, average_c1_width)\n",
    "\n",
    "average_c2_length = np.mean(iris[iris[\"cluster\"] == 1])[\"petal_length\"]\n",
    "average_c2_width = np.mean(iris[iris[\"cluster\"] == 1])[\"petal_width\"]\n",
    "c2.coordinates = (average_c2_length, average_c2_width)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_centers_and_black_data(iris, (c1, c2))\n",
    "plt.savefig('2means_demo_center_position_3.png', dpi=300, bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "iris[\"dist1\"] = c1.dist(iris[[\"petal_length\", \"petal_width\"]])\n",
    "iris[\"dist2\"] = c2.dist(iris[[\"petal_length\", \"petal_width\"]])\n",
    "iris[\"cluster\"] = iris[[\"dist1\", \"dist2\"]].apply(get_cluster_number, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_centers_and_colorized_data(iris, (c1, c2))\n",
    "plt.savefig('2means_demo_center_position_3_colorized.png',\n",
    "            dpi=300,\n",
    "            bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "average_c1_length = np.mean(iris[iris[\"cluster\"] == 0])[\"petal_length\"]\n",
    "average_c1_width = np.mean(iris[iris[\"cluster\"] == 0])[\"petal_width\"]\n",
    "c1.coordinates = (average_c1_length, average_c1_width)\n",
    "\n",
    "average_c2_length = np.mean(iris[iris[\"cluster\"] == 1])[\"petal_length\"]\n",
    "average_c2_width = np.mean(iris[iris[\"cluster\"] == 1])[\"petal_width\"]\n",
    "c2.coordinates = (average_c2_length, average_c2_width)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_centers_and_black_data(iris, (c1, c2))\n",
    "plt.savefig('2means_demo_center_position_4.png', dpi=300, bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "iris[\"dist1\"] = c1.dist(iris[[\"petal_length\", \"petal_width\"]])\n",
    "iris[\"dist2\"] = c2.dist(iris[[\"petal_length\", \"petal_width\"]])\n",
    "iris[\"cluster\"] = iris[[\"dist1\", \"dist2\"]].apply(get_cluster_number, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_centers_and_colorized_data(iris, (c1, c2))\n",
    "plt.savefig('2means_demo_center_position_4_colorized.png',\n",
    "            dpi=300,\n",
    "            bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "average_c1_length = np.mean(iris[iris[\"cluster\"] == 0])[\"petal_length\"]\n",
    "average_c1_width = np.mean(iris[iris[\"cluster\"] == 0])[\"petal_width\"]\n",
    "c1.coordinates = (average_c1_length, average_c1_width)\n",
    "\n",
    "average_c2_length = np.mean(iris[iris[\"cluster\"] == 1])[\"petal_length\"]\n",
    "average_c2_width = np.mean(iris[iris[\"cluster\"] == 1])[\"petal_width\"]\n",
    "c2.coordinates = (average_c2_length, average_c2_width)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_centers_and_black_data(iris, (c1, c2))\n",
    "plt.savefig('2means_demo_center_position_5.png', dpi=300, bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "iris[\"dist1\"] = c1.dist(iris[[\"petal_length\", \"petal_width\"]])\n",
    "iris[\"dist2\"] = c2.dist(iris[[\"petal_length\", \"petal_width\"]])\n",
    "iris[\"cluster\"] = iris[[\"dist1\", \"dist2\"]].apply(get_cluster_number, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_centers_and_colorized_data(iris, (c1, c2))\n",
    "plt.savefig('2means_demo_center_position_5_colorized.png',\n",
    "            dpi=300,\n",
    "            bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Example for K > 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "import copy\n",
    "\n",
    "\n",
    "def compute_centers_after_N_iterations(data, column_names, centers, N):\n",
    "    centers = copy.deepcopy(centers)\n",
    "\n",
    "    for i in range(N):\n",
    "        #recompute clusters\n",
    "        dist_names = []\n",
    "        for center_num in range(len(centers)):\n",
    "            data[\"dist\" + str(center_num)] = centers[center_num].dist(\n",
    "                data[column_names])\n",
    "            dist_names.append(\"dist\" + str(center_num))\n",
    "\n",
    "        data[\"cluster\"] = data[dist_names].apply(get_cluster_number, axis=1)\n",
    "\n",
    "        #update centers\n",
    "        for center_num in range(len(centers)):\n",
    "            for col_num in range(len(column_names)):\n",
    "                col_name = column_names[col_num]\n",
    "\n",
    "                centers[center_num].coordinates[col_num] = np.mean(\n",
    "                    data[data[\"cluster\"] == center_num])[col_name]\n",
    "\n",
    "    return centers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "c1 = Center(iris.loc[:, ['petal_length', 'petal_width']].values)\n",
    "c2 = Center(iris.loc[:, ['petal_length', 'petal_width']].values)\n",
    "c1.coordinates = np.array([2.52364007, 2.31040024])\n",
    "c2.coordinates = np.array([6.53276402, 1.211463])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal_length</th>\n",
       "      <th>sepal_width</th>\n",
       "      <th>petal_length</th>\n",
       "      <th>petal_width</th>\n",
       "      <th>dist1</th>\n",
       "      <th>dist2</th>\n",
       "      <th>cluster</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>5.1</td>\n",
       "      <td>3.5</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>0.112040</td>\n",
       "      <td>3.824028</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>4.9</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>0.112040</td>\n",
       "      <td>3.824028</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>4.7</td>\n",
       "      <td>3.2</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.2</td>\n",
       "      <td>0.203412</td>\n",
       "      <td>3.916407</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>4.6</td>\n",
       "      <td>3.1</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.2</td>\n",
       "      <td>0.061068</td>\n",
       "      <td>3.732042</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>5.0</td>\n",
       "      <td>3.6</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>0.112040</td>\n",
       "      <td>3.824028</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>145</td>\n",
       "      <td>6.7</td>\n",
       "      <td>3.0</td>\n",
       "      <td>5.2</td>\n",
       "      <td>2.3</td>\n",
       "      <td>4.229889</td>\n",
       "      <td>0.676487</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>146</td>\n",
       "      <td>6.3</td>\n",
       "      <td>2.5</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.9</td>\n",
       "      <td>3.870173</td>\n",
       "      <td>0.230631</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>147</td>\n",
       "      <td>6.5</td>\n",
       "      <td>3.0</td>\n",
       "      <td>5.2</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4.093707</td>\n",
       "      <td>0.420388</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>148</td>\n",
       "      <td>6.2</td>\n",
       "      <td>3.4</td>\n",
       "      <td>5.4</td>\n",
       "      <td>2.3</td>\n",
       "      <td>4.406168</td>\n",
       "      <td>0.779445</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>149</td>\n",
       "      <td>5.9</td>\n",
       "      <td>3.0</td>\n",
       "      <td>5.1</td>\n",
       "      <td>1.8</td>\n",
       "      <td>3.920660</td>\n",
       "      <td>0.210959</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>150 rows × 7 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     sepal_length  sepal_width  petal_length  petal_width     dist1     dist2  \\\n",
       "0             5.1          3.5           1.4          0.2  0.112040  3.824028   \n",
       "1             4.9          3.0           1.4          0.2  0.112040  3.824028   \n",
       "2             4.7          3.2           1.3          0.2  0.203412  3.916407   \n",
       "3             4.6          3.1           1.5          0.2  0.061068  3.732042   \n",
       "4             5.0          3.6           1.4          0.2  0.112040  3.824028   \n",
       "..            ...          ...           ...          ...       ...       ...   \n",
       "145           6.7          3.0           5.2          2.3  4.229889  0.676487   \n",
       "146           6.3          2.5           5.0          1.9  3.870173  0.230631   \n",
       "147           6.5          3.0           5.2          2.0  4.093707  0.420388   \n",
       "148           6.2          3.4           5.4          2.3  4.406168  0.779445   \n",
       "149           5.9          3.0           5.1          1.8  3.920660  0.210959   \n",
       "\n",
       "     cluster  \n",
       "0          0  \n",
       "1          0  \n",
       "2          0  \n",
       "3          0  \n",
       "4          0  \n",
       "..       ...  \n",
       "145        1  \n",
       "146        1  \n",
       "147        1  \n",
       "148        1  \n",
       "149        1  \n",
       "\n",
       "[150 rows x 7 columns]"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [],
   "source": [
    "def inertia(data, centers):\n",
    "    total_inertia = 0\n",
    "    for center_num in range(len(centers)):\n",
    "        data_in_this_cluster = data[data[\"cluster\"] == center_num]\n",
    "        total_inertia += np.sum(centers[center_num].dist(\n",
    "            data_in_this_cluster[[\"petal_length\", \"petal_width\"]]))\n",
    "    return total_inertia"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "def distortion(data, centers):\n",
    "    total_distortion = 0\n",
    "    for center_num in range(len(centers)):\n",
    "        data_in_this_cluster = data[data[\"cluster\"] == center_num]\n",
    "        total_distortion += np.sum(centers[center_num].dist(\n",
    "            data_in_this_cluster[[\"petal_length\", \"petal_width\"\n",
    "                                 ]])) / len(data_in_this_cluster)\n",
    "    return total_distortion"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "inertia: 44.95723374524917, distortion: 1.254497095901379)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "random.seed(25)\n",
    "c1 = Center(iris.loc[:, ['petal_length', 'petal_width']].values)\n",
    "c2 = Center(iris.loc[:, ['petal_length', 'petal_width']].values)\n",
    "c3 = Center(iris.loc[:, ['petal_length', 'petal_width']].values)\n",
    "c4 = Center(iris.loc[:, ['petal_length', 'petal_width']].values)\n",
    "new_centers = compute_centers_after_N_iterations(\n",
    "    iris, ['petal_length', 'petal_width'], [c1, c2, c3, c4], 12)\n",
    "print(\n",
    "    f\"inertia: {inertia(iris, new_centers)}, distortion: {distortion(iris, new_centers)})\"\n",
    ")\n",
    "plot_centers_and_colorized_data(iris, new_centers)\n",
    "plt.savefig(\"k4_example1.png\", bbox_inches=\"tight\", dpi=300)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "inertia: 45.94868633864745, distortion: 1.3083110705058751)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "random.seed(29)\n",
    "c1 = Center(iris.loc[:, ['petal_length', 'petal_width']].values)\n",
    "c2 = Center(iris.loc[:, ['petal_length', 'petal_width']].values)\n",
    "c3 = Center(iris.loc[:, ['petal_length', 'petal_width']].values)\n",
    "c4 = Center(iris.loc[:, ['petal_length', 'petal_width']].values)\n",
    "new_centers = compute_centers_after_N_iterations(\n",
    "    iris, ['petal_length', 'petal_width'], [c1, c2, c3, c4], 12)\n",
    "print(\n",
    "    f\"inertia: {inertia(iris, new_centers)}, distortion: {distortion(iris, new_centers)})\"\n",
    ")\n",
    "plot_centers_and_colorized_data(iris, new_centers)\n",
    "plt.savefig(\"k4_example2.png\", bbox_inches=\"tight\", dpi=300)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "inertia: 54.34774261570242, distortion: 1.50090424867691)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEHCAYAAABMRSrcAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdd5hU1fnA8e+ZvrO9AQtLEwUBAVGkiILlZzcaEzWWWKLGbowaNTExppiiEuxGEyu22JVoxAJWRKlSl16XtruzbXZ6Ob8/7jLs7AzsbBl2Yd/P8+wzzpk7976LMO/cU96jtNYIIYTo3kydHYAQQojOJ8lACCGEJAMhhBCSDIQQQiDJQAghBGDp7ADaoqioSA8YMKCzwxBCiP3KggULqrTWxcle2y+TwYABA5g/f35nhyGEEPsVpdSmPb0m3URCCCEkGQghhJBkIIQQgv10zCCZUChEeXk5fr+/s0NpNYfDQWlpKVartbNDEUJ0UwdMMigvLyc7O5sBAwaglOrscFKmtcblclFeXs7AgQM7OxwhRDd1wHQT+f1+CgsL96tEAKCUorCwcL+8oxFCHDjSmgyUUn2VUp8ppcqUUsuVUjcnOeY4pVSdUur7xp/ft+N67Qu4k+yvcQvRGap91VR4K6j2Vbf6vd6Ql0pvJZXeSoKRIACBcCDW5gv7Ojrc/Ua6u4nCwG1a64VKqWxggVLqE631imbHfaW1PjPNsSSo94f41euLmXL+KHIc0l8vRFemtWZD/QZu/+J2VtesZmjBUB6Y/AD9c/qn9P4afw3/XPxP3lz9Jg6zgxtH38hJ/U/iv+v/y1OLnyKiI1x46IVccdgV5Dvy0/zbdD1pvTPQWm/XWi9s/G83UAb0Sec1W+PTFTv5eMVOZpbtTNs1vvzyS4444ggsFgtvvvlm2q4jxIHO5Xdxw8wbWF2zGoCy6jJu/uxmXD5Xi+/VWvNF+Re8uvJVQtEQ7pCbaSumsdm9mQcXPIg37CUQCfD88udZsHNBun+VLmmfjRkopQYAo4Hvkrw8QSm1WCn1oVJq+L6K6fX5W4zHeeVpu0a/fv14/vnnueiii9J2DSG6g2AkSLk7/t/qutp1se6evfGH/czcPDOubUj+EL4s/zLh2I83fUwoGmpfsPuhfTKbSCmVBbwF/FJrXd/s5YVAf611g1LqdOBd4JAk57gauBqMD9i2uPjf3zJ73e5vEVaz0Vc/f1M1A379Qax94qBCXv75+DZdY9q0aUyZMgWlFCNHjuTFF18EwGQ6YMbqhegUVpOVQkchLv/uf8O9MnthNbXcxWsz2ziyx5F8vuXzWNtm92bOOeSchGPH9hqb0jkPNGn/hFJKWTESwcta67ebv661rtdaNzT+9/8Aq1KqKMlx/9Jaj9FajykuTlpnqUU3nHAwGVZz7HkoouMeATKsZm48ISEXpWT58uX85S9/YdasWSxevJiHH364TecRQiTKd+Tz4HEPkmPLMZ7b85k6eSoFGQUtvtdsMvODQT9gfInxJc+kTBzZ80iGFQ7j7EFnozC+GE7qM4kT+p2Qvl+iC0vrnYEypsk8A5Rprafu4ZhewE6ttVZKjcVIUC13ArbB0YOKeObyMVz5/Hx8oUjC6xlWM89efhQTBhW26fyzZs3i3HPPpajIyGUFBS3/JRVCpMZisnBY0WG8e/a7+MN+HBYH+Y58TCq177SFGYU8MOkBvGEvJmUi05pJti2bO466gxtH34jWmgxLBnmOvDT/Jl1TuruJJgKXAEuVUt83tt0F9APQWj8JnAtcp5QKAz7gAq21TnayjnD0oCIeu2g017+8kEA4Gmu3W0w8dtHoNicCMAapZJqoEOljNVspdratZwAgz5FHHvEf9jn2HHLsOe0Nbb+X1mSgtf4a2Ouno9b6MeCxdMbRXL0/hMWkCCmwWUwEw1HMJkW9v32DRieeeCLnnHMOt9xyC4WFhVRXV8vdgTgg+cI+PEEPNrMtrR+kVd4qgtEgObYcsmxZabuOOIBWILfGa/O24A1FGFqSw78vHcPQkhx8oUi7ZxUNHz6c3/72t0yePJlRo0Zx6623Mm/ePEpLS3njjTe45pprGD58n02WEiItXD4XD8x7gPPfP5/bvriNTfWbiOpoy29shVA4xNratdz51Z1c8uElTF0wlQpvRYdeQ8Q7YGoTtUa23cpdpw/lyokDMZmUMZbw9Xrmbaxp97kvu+wyLrvssri28vL0TV0VYl/yhDxMmT+F99e/D0Clr5IrPrqC1858jaKMhHkfbeYKuLjyoyup9hurjN9Y/QbBSJDbx9xOriO3w64jduuWdwb/vmwMPz/2IEwmowfLbFJcPWkQ/750TCdHJkTX5gv7+GTTJ3FtFd4KGoINHXqdukBdLBHsMmvzLLxhb4deR+zWLZOBEKJtTJjom903rs2szGRYMjr0Otm27Nh0z11Ks0tTnjkkWk/+ZIUQKSvIKOBPR/8p9uGvUNx8xM0dPrjrMDu4euTVsedOi5O7x99Nz8yeHXodsVu3HDMQQrTdkIIhvH/O++z07KQwo5BsWzaZ1swOvUZBRgEXHnohZx98NlW+KkoyS8izdc/5//uKJAMhRKvYzDZ6OHvQw9kjrdcpzCikkMKEbimRHt27m8hfB/+5yHgUQqQsEo1QF6hLKBJXF6hL2BOgIdiAJ+SJa/OEPLiD7jZdOxQNUReoIxwNt3hsXaAOf7jljaM8IU+HD4J3NF/YR32weWm3jtO97wxWfQgrP4BVM2DUT9JyialTp/L0009jsVgoLi7m2WefpX//1OqvC9EV1fhr+N+G//Hxxo8ZWjCUK0Zcgd1s55tt3/D6qtfpndWb60ZdR64tl7KaMp5e+jROi5MbDr+BkswStjZs5fHvHycQCXD1yKsZkj8k5TEHl8/FqytfZe6OuRzd+2jOG3wehRmJVQPqAnXM3jqbN1a/Qe+s3lw/6npKskoSBqD9YT8b6zfyxPdPEIwEjXgKhnR4t1d7hKNhtjVs44nvn6DSV8lFh17EmF5jyLV37BTb7p0MFr24+zFNyWD06NHMnz8fp9PJP//5T+644w5ee+21tFxLiHTzh/08vfRppq2YBsDCioX4I35GFY/i9980blK4E74o/4LXzniNKz+6MvbeBTsX8NLpL3HBBxfEvtV/s+0bXjvzNYYVDmvx2rX+Wn7z1W+Ys30OAIsqFlHmKuPPE/8ctwo6qqPM3DyTe765JxbPl+Vf8vZZbyeUsqjwVnDh+xcS1kY8s7fN5vUzX2do4dC2/QGlQbW/mvPfPz92dzV3x1ymTp7KSQNO6tDrdK9uohfOgj/k7v7ZMtdo3/JdfPsLZ7X5EtOmTWPkyJGMGjWKSy65hOOPPx6n0wnA+PHjZQGa2K+5g27eWvNWXNvg/MG8uvLVuLa6QB0rqldQklkSaxtRNIIP13+Y0L3zctnLKe0f4I/4Y4lgl8+2fJbQLVUbqOWVslcS2jbUbUg454cbPowlgqbxpNIFta8sq1qW0M32UtlL1AU6tnu7e90ZTPoVlM+FUONfnl39nU37Pa0ZMOn2Np1+Vwnr2bNnU1RURHV1/KKZZ555htNOO61N5xaiK1BKkWfPi/twagg1kGdPnOmTZ8+L+6BuCDUkXaVcnFGMGXNCe3MmZcJuthOIBGJtGZaMhOKQFmVJGk+yGkrJit71zOzZpdYzJPtdChwFWEwd+/HddX7jfWHgJLjodeMDPxlrBlz0Bgw8tk2n31sJ65deeon58+dz++1tSzRCdAUFjgJ+M/Y3cQvCQpEQtx55KzaTLdZ2VK+jEmYB1fprObb02Lj2AkcBFxx6QUqbP2Vbs7l+1PVxbTcfcTO5tvi+8xx7Dr8a86u4eMb1Gpd09tOkPpMozS6NPS90FHL+4PO7VDLon9OfkUUjY88zLBn84ohfdPi4hkpjtei0GTNmjJ4/f35cW1lZGUOHptjPt2oGvHEZNJ1lYHHAeS/AkFPbHNcjjzxCRUUF9957b1z7p59+yk033cQXX3xBjx7Jp+O1Kn4hOpEn5KHaX833Fd8zKG8QJZklOK1Oavw1LKpYRE9nT/rn9CffkY/L52Jx5WKcFieDCwZTlFFEla+Kla6VBCIBRhaPpCijKOXS73WBOqp8VSx3LeewwsMoyihK+o0/EAlQ469h4c6F9MrqxYCcARQ4klcQrvJVUeYqIxQNMaJoRKvi2VdcPhcb6jZQ5atidI/RFDgKsJpbvxubUmqB1jpp3Z3umQwWvwYf3GJ0F5ntEAkYdwVnPNiugeTly5dzzjnnMGfOnFgJ602bNnHuuecyY8YMDjlkzzuoSTIQQqTb3pJB9xoz2GXRNAh6odcIOOmP8Mk9sGNpu2cVNS1hbTabGT16NOXl5TQ0NHDeeecBxv7N06dP76jfRIgDXlRHU+q2SfW4rqarxN09k4E9B06+F8ZfDyYTDJwM3z4Bm75p96mTlbAWQrSey+fi002fsqRqCWcNOotDCw5NOre+NlDLiqoVfLDhA0b3GM0JfU9IaV/kzuYL+9ju2c6rZa+SY8vhvCHnGYPpppYH09Ohe3YTdUH7e/xCdKRqfzU3zbyJJVVLYm13jbuL8wafFzeLJhQJ8WLZizy44MFY29heY5kyeQr5jvx9GnNrra5Zzfn/PZ+INvZjz7Xn8vZZb6e1zMfeuok6/95ECCGaaQg2xCUCgKeXPk1toDaurS5QxzNLn4lrm7tjbpff9yAQDvDM0mdiiQCM3+Wbbe3vnWgrSQZCiC6n+V4GwB771ZPNt0/2/i5FGeshmjOrzukiAkkGQoguKMuWxdheY+Pabjz8RvLt8V0/eY48rht1XVzb5D6TcVqcaY+xPexmO1eOvBKraff00KKMIsaXjO+0mLrnALIQokvLd+Rz/6T7mbdjHstcyzhtwGn0ze6bMLhqMVk4beBpDC0cyicbP2FUj1Ec2fNI8hxdf++DPpl9mP7D6UxfN51sWzanDDilQ/eRbq1uPYDsDrr53de/495j7iXblt2RIbaaDCALIdJNBpD34PMtnzNryyw+3/J52q7x5JNPMmLECA4//HCOOeYYVqxYkbZrCSFEW3XrbqJ31rwDwLtr3+UHg36QlmtcdNFFXHvttQBMnz6dW2+9lRkzZqTlWkLsDyq9lczbMY9AJMDRvY+mMKOQukAdS6qWsNOzk0mlkyh0FOIJe1hbs5bVNauZ2GcixRnFhHWYcnc5iyoWcWTPI+mT1Sfp2gNf2IfL5+Kr8q/ok92H4YXDk+57sK80jac0u5ThhcO73FqIbpUMrvr4Kr7b/l3s+a7Bm0UVixjxwohY+7iScTx98tNtusa0adOYMmUKSilGjhzJiy++GHvN4/F0uZonQuxLld5KLvzgQnZ6dwJG8bk3fvAGv/n6NyyqWATAffPuY/rZ05m6YCqfbv7UeOM8+Nsxf2PaimmUVZfFznfzETdz8dCLybDEF59cU7OGyz68LFaeemTRSB494dFO+wBeXb2ay2ZcFptKOqp4FI+c8Mge6yV1hm6VDK4ecTWLKxbjjxgF6nbVUG9aS91hdnDNyGvadP49lbB+/PHHmTp1KsFgkFmzZrXztxBi//VF+RexRADgDrl5uexl+mT1iSWDSDSCO+TenQgaPTD/Aar98WXhn1r8FGcNOisuGdQF6nhwwYNx+xQsqVrCDu+OTkkGtYFapi6YGremYHHlYnZ6dnapZNCtxgzGlozl8RMfx2F2JH3dYXbwxP89wVG9jmrT+fdUwvqGG25g3bp13HfffQkVTYXoTpLt4VsfrI/7MFdKEYokbnZTH0h8bzAapPkkmIiOJGwGA+ANdc5CtKiOJo2n+aY8na1bJQMwEsKUyVOwm+1x7XaznSmTp7Q5EQBorffaDXTBBRfw7rvvtvn8QuzvTh1waty/PZMyccmwS1hSuXu1cVRHybZlk2GO7/qJEk04X1RH+fVXv45ry7fnc/nwy+PaijOKGZAzoP2/QBvk2fMS4unh7EG/nH6dEs+edLtkAMY3EbMyx3ZOMikTZmVO+q2lNU488URef/11XC4XANXV1axZsyb2+gcffLDXMtZCHOiKMop48wdvcvagszl1wKn854z/UJpVyqMnPMpFh17E8X2P5+mTn6Y4o5h7j7k3bpVuVCcmA7vZzvWHx294o5RiYp+J/PP//slxfY/jkqGX8MoZr1Dk7Jw5/CZl4tjSY3nixCc4ru9xXDrsUl45/ZVOXVOQTLdcZ3DFjCuYv3M+QwqGcMuRt/DgggdZVb2Ko3odxTOnPNPyCfbihRde4IEHHoiVsM7NzeXTTz/FarWSn5/PY489xvDhwxPeJ+sMRHcSjASJ6igOy+4u21AkRDgaJqPJToRzts3hF7N+ERvnayqVbl1vyIvVbI1b6duZOjse2c+gmSxbFreNuY1Lhl2CSZkY12scL5a9yMKdC9t9bilhLUTLbGZbQpvVbE3YvWtC7wlMmTyF2764LW7v41S7dZ3WrlWWoqvF01Rak4FSqi8wDegFRIF/aa0fbnaMAh4GTge8wOVa6/Z/Ku/FIyc8EvfcbDJz+fDLE/r1hOhO6gJ11Phr2O7ZzkG5B5FnzyMUDVEXrGNT3SYG5A4g156LWZmpC9Sxvm49vbN6k2fPI9OaSbW/mg11GyhwFFCUUdRhJaSbdutaTVZC0VCHdOt2BHfQTX2gnk31jX8+tlwybanvTVzlq2JT/SYyLBn0cvbq1LUH6b4zCAO3aa0XKqWygQVKqU+01k2X4Z4GHNL4Mw74Z+OjEGIfcQfdPLvsWZ5d9ixgrMF5+uSncYfc3DTzJjQaheKvx/yVQ/IP4YIPLiAcNaZu3jbmNib1mcTF/7uYhlADAP/X7//4/YTfd0hCeGfNO/jCvoRu3XQuFk2FP+zno40f8cc5fwSMSqn3T7qfE/ufmFI30A7PDi7+38VUeCsAGFU0iodPeLjTFseldQBZa71917d8rbUbKAP6NDvsbGCaNnwL5CmlStIZlxAinifk4bllz8Weh6Ih/vztn6kL1KExxhU1mr9+91cagg2xRADgC/mYOn9qLBEAfLr5Uyp9lR0S265u3dfOfI2jex/Nf874D7eOuZVMa+rfwNOhPljP/fPujz3XaO797l5q/bV7eZchHA3z4ooXY4kAYHHVYpa7lqcl1lTsszEDpdQAYDTwXbOX+gBbmjwvb2zb3uz9VwNXg7GPsBCi4/jCvtiH/i47PDvIs8dX/3SH3AnTp/MceWz3xv1zBaDKW8Xg/MHtjq2rduuGo+GEtQJ1gbqks56aC0VCbHFvSWgvd5d3WHyttU+mliqlsoC3gF9qrZt39CWbmJ8wxUlr/S+t9Rit9Zji4uJ0hClEt5Vty6ans2dc2+kHnc7Guo1xbWN6jklYvLXatZofHvzDuDanxcnB+QenJdauwmFxMKJoRFzbhJIJcTOk9iTDmsH5g8+PazMrM5NKJ3VojK2R9jsDpZQVIxG8rLV+O8kh5UDfJs9LgW3pjgsg4naz7de/offf/4Y5u3NLWAvRmQodhbxw2gtMnT+VNbVrOKn/SVw89GIi0Qgb6jawYOcCxvQaw3WjrsNisnDliCuZtXkWg/MG8/NRP49tJvPOmnfo4ezBr476FQX2rlNqIR0KHAU8dPxDPL7ocRZVLGJcyTiuGXVN0sJ5yYwoHsF9x97H88ufx2l1csuRt3RqMT201mn7wfjWPw14aC/HnAF82HjseGBuS+c98sgjdXMrVqxIaGtJ7bvv6hVDDtW1773X6ve21htvvKEBPW/evKSvtyV+ITpaQ6BBV3mrdDAcjLV5Q15d5a3SvpAv1hYIB3SVt0o3BBtibeFIWLu8Ll0fqN+nMXe2ZH8+qYpGo9rlc+kaf00aIksEzNd7+FxN953BROASYKlS6vvGtruAfo2J6EngfxjTStdiTC39WZpjiql96+3YY+5ZZ6XtOm63m0ceeYRx42SSlOjaMm2ZZBI/MJthyUioCmoz2xK+xZpN5i5XlnlfSPbnkyqlVJcpVpfWZKC1/prkYwJNj9HADemMY5dNP7sC75w5uxusxvQv78KFlB26e/Wvc8IE+j/3bJuukayE9d13380dd9zBlClT2hW/EPtaIBygLliHN+TFaXUaXSAaagI1eEIenBYnTouTXEfyrpFqXzWesAezMpNpzUy5C2VfqvXX4gl70FrjtDq7zIfzvtatViAXXXMNWxYtQvsbl7aHQvGPgHI4KGrcjKa1kpWwXrRoEVu2bOHMM8+UZCD2K+FImIUVC7n5s5vxhX04LU4ePeFRejh7cOmHl1ITqMFisnDX2Ls4uf/JCQnB5XNx46wbWVa1DIBT+p/CXePv6lIfttX+av7wzR/4bMtnAIwuHs2Dxz/YuX33naRbFarLHD+Ovk8+iXIkH+1XDgd9n3qKzHFj23T+5iWs8/LyuOWWW/jHP/7R5piF6Cw1gRru/PLO2PRJb9jLHV/eQYW3gppADWBMr/zr3L/iDcfPMIpEI7y79t1YIgD4aNNHrK5eve9+gRQsrlwcSwQAiyoX8dHGjzoxos7TrZIBGAmhz4NTUfb4EtbKbqfPg1PbnAggsYS12+1m2bJlHHfccQwYMIBvv/2Ws846i+ZF9oToikLRUOxDfxeX34XZZI5rC0fDCckgFA2xpGoJzXXmoqpkllYuTWj7vvL7uEV13UW3SwYAUbcbzGYwmYy7BJMJzGajvR2al7CORCJUVVWxceNGNm7cyPjx45k+fTpjxiQtGihEl2I32xmUNyiubXD+YPzh+Aqiu2oTNeWwODht4GkJ5zy29NiOD7QdTux3YkLbGQPPwGLqVj3oQDdNBrVvvoX2+bAPGULp449hHzIE7fPFZhe11fDhw/ntb3/L5MmTGTVqFLfeemsHRSzEvleYUchjJzzGET2OwKIsjOk5hkdOeITB+YM5ru9xWE1WDi04lH+d9K+k4wDje43n2lHXkm3NpjijmL8c8xd6ZfbqhN9kz/pm9+WeCfdQ6Cgkx5bDzaNvZlSPUZ0dVqfolvsZbLn+BpxHjaHgsstQJhM6EqH6hRfwLlhA38cfT0fILZL9DERXVeuvJRQNYTPbYrOBqn3VBKNBFIqemT33+N5AOIA7ZNxx59nzuuQ37nA0HKsnlGPPSVpe+0Ah+xk00/eJ+A98ZTZTeMUVFF5xRSdFJETXlefIS2hLdT2B3WLHbrG3fGAnspgsnbYLWlfSLZOBEN1dvTeIOxAmqsFiVpTkZuAPRaj2BIlENRaToiRvzwupqv3VBMIBLCYL+Y78dn/j9wQ91AfriRLFarLSw9mDcCRMTaCGsA5jN9n3moCqfdUEIi3H4w668Ya8KKXItmbH7arWklAkRG2g1ojHbO9SU2Q7wgGVDJrP5tlf7I9ddWL/tbPez8fLd/D3D1fiCUaYeHAh/zjvcFbvqOeW1xfj8gQZ3juHf/70SPoVJO7MtbVhK7+Y9QtW16ym0FHIfZPu4/Aeh8dtdN8aLp+Ljzd+zEMLH8Ib9jKhZAL3HnMvG+o2cPsXt1MTqGFowVAePv5hSrISq9tvdW/lF5/tjuf+yfczqnhUQjzV/mr+9t3f+GjjR1hNVq4acRUXDr0woTJrMv6wn/k75nPX13dRE6hhWMEwHjrhIUoyD5xq+wfMALLD4cDlcu13H6xaa1wuF449rH0QoqN5AmHufm85nmAEgNlrXTz15To+KduJyxMEYPm2eu56eymV7viZQ3WBOu6efTera4z1Ai6/i5tm3UR9oO27jrmD7ri1CnO2z+HZpc+yw7MjNrW1rLqMP875Y8J1agO1/Hb2b+PjmXkTdYG6uOOiOsonGz9hxsYZaDTBaJAnFj+RtIz0nmK8+bObY/GsqF7Bn+f8GXewfTMQu5ID5s6gtLSU8vJyKis7ZkONfcnhcFBaWtrZYYhuYsW2xA/ub9e7OH9M37i2BZtqCEXiv1wFI0G+r/g+rs0X9uEJeSimbaXlV7hWJLQtrFjISQNOimtbVLEobh9kMLpuFlcsjmvzhr0JZbb9YT9fbf0q4Trzd8xPKEOdTI2/hmA0GNf2fcX3+MN+sm0HRsXjAyYZWK1WBg4c2NlhCNHlDeudk9A2bmAh6ysb4tpG98vDaorvdrWZbYwqHsX8nbtn82VYMtq10fvQwsRZdKN7jGare2tcW7KuH6vJysjikSys2L1teoYlI+m6h4m9J/JF+Rdx7WN6prbmJ8+RF9t/ORZPj8R49mcHTDeRECI1mXYLfzhrOE6bsZJ4wkGFXDv5IE4Y0pN8p1G88dBe2fztRyMozonvvsy15/LniX/m4Dxj45p8ez4PH/8wuba2F6DLseZw51F3xip/jus1jisOu4JiZ3GsP39w/mD+cPQfyLHHJ7I8Rx73HnNvbHFcgaOAR094NOE4kzJxysBTOLn/ySgUVpOVa0ZeQ9/s+LuhPcZoy+HB4x6MTa09tOBQ7h5/d8J19mcHzDoDIUTq6rxBGgIRIlpjbZw55AuFqfaEiESiWM2mvc4mcvlcBCIBrCYr+fZ8LOb2dTK4g24agg3GbCJlpUdmj92zd6Jh7Ja9z95JNZ76QH2s1lK2LbtVdzRx8Zj3Prupq9rbOgNJBkII0U3IojMhDkC+YBh3IIwJRWGWLW3Tqmu9QYKRKDaziTzngbs6t7uTZCDEfsjVEODhT9fw9qKt9Mi2c+85hzG6Xx4Z1o79J72l2ssdby5h4eYajuyfz/3njqQ0v+2DxaLrkgFkIfYzoUiUl77dxLRvN9EQCLO+ysOlz8ylxhNq+c2tUNUQ4MoX5jFnvYtAOMo361xcPW0BroZAy28W+x1JBkLsZ+p9IWYs3xHXFo5qyra3feFXMoFQlNU746ebrtheTyAc7dDriK5BkoEQ+5kMm5lDeyVOaexf2LHdN1azoiAzfoygOMuOxbz/lXwRLZNkIMR+xmmz8KtThtC3wJj6qRT8/NiBFGV17AKo/EwbD/3kcBxW42Miw2rmoQsOp0AGkQ9IMrVUiP1UpdtPQyCC3WIi024hN8Pa4dfwhyLU+UI0+MNkOSzkZVixW80tv1F0STK1VIgDUHG2g+I0l8VxWM04rGZ6HjgLbcUeSDeREPupSFTjaghQ7295FlGtN0i1p+NmAQUjQVw+F56Qp8PO2R6hSLiEBkQAACAASURBVAiXz5VQoE6kTu4MhNgP1XiC/HfxNv4zbws9cuz89vShDCjKxGqO/37nDYZZsa2e+z9aRSAU4frjD2b8QYXt6lKq9lfzStkrzNw8k0PyD+GXR/yS3lm92/srtT0eXzUvlb3EZ1s+Y3D+YG4+4uZOjWd/JWMGQuxnIlHNq3M387t3l8XaMm1mZv3qOHo2Kyy3ocrDif/4nGiTf+avXzOBsQPbVlfHF/LxwPwHeGP1G7G20qxSXjz9RYoy9v3Wkd6Ql/vn3s9ba9+KtfXN7su006Z1Sjxd3d7GDFLuJlJK/UgptUYpVaeUqldKuZVSHTuxWQjRolpvkFfnbo5r8wQjrEyyzuDDpdvjEgHAS99uItjGtQINoQbeX/9+XFt5Q3mndc94Q17e3xAfzxb3FukuaoPWjBncD5yltc7VWudorbO11jKsJMQ+ZrOYKMlN3BmvODtxamnfJNtW9i90YjG1ba2ASZno4ewR16ZQ2MydNN1UkRCPSZk6L579WGuSwU6tdVnaIhFCpCTbYeU3pw0l2757yO//hvagZ5IEMWFQIcNKdn9nK8l18NNx/TG1MRkUOAr4/YTfY1G7r33FYVckbCazrxQ6Crlnwj1x8Vw14qpOi2d/1uKYgVLqR43/ORnoBbwLxKYlaK3fTlt0eyBjBqK7C0eiuDxB1ux0U5hlp2eOnYLM5IvOqhoClNf4CIQiHFSclfQOojX8YT+1gVrW1q6lNKuUfEd+bNOXzuAL+6gL1HWZeLqydu1noJR6bi8va631Fe0Jri0kGQghROu1a9GZ1vpnjSeZqLWe3ezEEzsmRCG6p0gkSiAcxWlv2yzvak8Ah8Uc9/5AOGL041t29wIHw1E0Grtl76uHQ+EI3mCE3CYlJ6JRjT8cwWExx3UveYNh7GYTZrMsVzoQtOZv4KPAESm0xSilngXOBCq01oclef044D1gQ2PT21rrP7UiJiH2W5VuP/+Zu4XF5bX88PA+HH1wUUJhuD3ZUedj5Q43r87dQkmug6uOHUih08p6l5envliH02bhuuMG0SPbxs76IP/8fB2+UJhrJx/MgEJn0uSzo87Hy99tpmx7PWeMLOGYg4swKcX7S7bz5ZpKjhtczOkjSjApxddrK3nv+22MKs3jgrH92t31JDpfi8lAKTUBOBooVkrd2uSlHKClIiXPA48B0/ZyzFda6zNbikOIA0lVQ4DLn5vH8m3GdNBPyyq49aRDuHbywXHf6Pdk3sYabnp1Uez5B0u3M/3GiZz56Nfs6vmdsWwH/73pGE59+Ev8IWMq6ftLtvO/XxzLoSXxEwF31Pn42fPzKNvujsXz0pVjeWXuZv631CiXPbOsApOCCneAh2eujR330YodvPCzsRR2cKE8sW+lcn9nA7IwEkd2k5964Ny9vVFr/SVQ3c4YhTjgNATCsUSwy7OzN1LrC7b43vIaL89+vSGurdIdYOUONxeN7RdrO6xPLu8v2RZLBABRDU9/vYFQJH6dgScQiSWCXTJsFj5cFr9vQkmek+e+2RjXtmxrPZ5AuMW4RdeWypjBF8AXSqnntdab0hDDBKXUYmAb8Cut9fJkBymlrgauBujXr1+yQ4TYbySb5++0mlG0POXTrBQZtsSbcqfVTI1ndzIJhCNkJukOyrZbaL5d8p72KLCaTASbJI5gOIrTaqHeF//hbzbJuMH+rsX/g0qp/yqlpgOPKqWmN/9p5/UXAv211qMwxh/e3dOBWut/aa3HaK3HFBcXt/OyQnSuTJuFM0aUxLX95vShKY0ZlORlcNvJQ+ISyvDeOfQrdPLlmqpY27ZaHycN60mvJiUqsuwWrjxmIJZmH94ZVjMnD+sZfyEN10w+KK4pEIrw69MOjWs7c2QJmXYpa72/S2Vq6eTG//wRxjqDlxqfXwhs1Frf1cL7BwDvJxtATnLsRmCM1rpqb8fJ1FJxIHA1BFi1083yrfUcN6SYnjkOclIsIFfpDtAQCPPx8h30yctgzIB8irLsVDYE+GxlBRk2CxMPLqRHtoOKej+z17nwBcMcf2iPxt3KEr8H7qjzU7ajnhXb6jnx0B4UZdsxmxSbXB7mbqhm3MBC+hc6MSnFjno/X6yqZHifHIb0zJbxgv1Eu9YZNDnJl1rrSS21JXnfAPaQDJRSvTBWNmul1FjgTYw7hb0GJclACCFar6M2tylWSh2ktV7feNKBwF77a5RSrwLHAUVKqXLgHsAKoLV+EmMA+jqlVBjwARe0lAiEEEJ0vNYkg1uAz5VS6xufDwCu2dsbtNYXtvD6YxhTT4XY7wTDESrdQd77fisOq5kzRpRQnG1vc92fZOr9IW56ZSFXHXMQX66pYkRpDuMGFiaUqt4VT4U7wHvfb8Vps3D6iBIKnVYqGoy9D/yhCOccUUpxppWGYITPVlWypdrLD0f3oSTH0eaFb+lS7atm/s75lLnKOGnASZRmlZJjl9qY6dKq/QyUUnZg1+jRSq11x22d1ArSTSS6gk0uD6c8tHsOf2Gmjf/dfGzSD+q2em3eZu58a2lc27GHFDHl3FEJhek2VhnxBBrLUxdl2Zh+4zH88LHZVDQY/1QdVhMzbz2OS5+dy7rKBgBMCt64dgJH9m/bHgfpUOOv4Y4v7+Db7d/G2v56zF85feDpmE0yWN1W7drPQCl1QuPjj4AzgEGNP2c0KWInRLcSjkR5+qsNcXP4XZ4gn6zY2aHX+c+8LQltX62pwheKxLWFwlH+9eX6WCIAqGow4hlYvLuCZ16GjVU76mOJAIy1B1M+Wk1dCmsc9pWGUENcIgB4dNGj1ARqOimiA18q94WTgVnAD5K8poF9XrVUiM6mIekGMc0Xc7XWxf/+ltnrXLHn1j3M/7/19e95+/ompcFU8muHItG4biuLWRFqvttN43FJmjtNsh6LcDRs/MGLtGjxzkBrfU/j48+S/OzziqVCdAVWs4mfTxoYN9c/y27h1OG92nXeG044mAzr7m6QUCTx008puOqYgQnxXD3poLh4su0WTjusV9wOaDvq/BzWO4fezbqYfnHiIeQ7u86GMFnWLIYXDo9ru2rEVeQ58jopogNfa6aWrgO+Bb4CvtRar0hnYHsjYwaiK/AFw2yr9fP8NxvJsJq57OgB9MxJPoe/Nb5ZV8WVz89P6AoC407h4QtGc3qzBWtN43numw1k2ixcOmEABZlWKhuCTPtmI95gmMsnDqR3rgNPMMLr87ew2eXlkgn9GViUSbYjtTUO+4rL5+KjjR+xtGopZw06i2GFw2SfgnbqqHUGdmAccCwwEWMgebHW+pyOCjRVkgxEVxJt7F/pyFlEM8t2cv3LC+PGAOwWE09cfAQnDu25l3cmjycSiaIhLlFprYlq3eVLSYSjYSymrjXTaX/VUesMIkCo8TEK7AQq2h+eEPu3jkwCu9T7Q1hMipAy9jwOhqOYTYp6f6hN8STbc0Aphbl5kaIuSBLBvtGaP+V6YCkwFfi31trVwvFCdHl1vhBVDQGWldcxvE8uxdl2clMsCbEn2+t8lG134wtGGN0vj+JMGy5viI0uD9vr/Bw1IJ8CpxW3P8KOej+rd7o5akABeRlWQtEoNd4Qj85cizcY4ZCeWdx+yhDun7GKtRUNPDd7I5MH9yDLbsblCbJoUy09cu0MLMwk32mjqiHA4vI6MqwmhvTKkX0GRMpakwwuBI4BrgeuUkp9gzF2MDMtkQmRZv5QhPcWbeX303cXyr37zKFcNLZ/0qqgqdhR5+OnT3/HukoPAAWZNt6/6Rhuff17vl1vVHN3WE28fd1EPliyjcc/XwcYc/3fuX4i8zZWc+8HZbHznXtkKb1yHKytaEADS8rr+MfHq7h60kFxaxyOH1LEvT8cwVmPzcbVWLl0UHEm/7l6giQEkZKUOwu11u9prW/HWHX8P+By4P00xSVE2tX5Qvx9xsq4tgc+WpVSV8yefL22KpYIdtnk8sYSAYA/FOX+GSuxNZk1FNUQjET5x8er49774Cdr8IejcTMqX/5uM55AOG6NQ57TznOzN8YSAcC6Sg/frNtrzUchYlJOBkqptxpnFD0MZAKXAvnpCkyIdNNa4w3Gz9jxh6JE2jHhfmd9/KL8TLuZak/iQn2XJ0iOI/7G3AQJM4h8oQjJhiT84WjcngQ5GVZ21vtbjEeIPWnNNIK/A4O11qdore/VWn+htY797VNKndTx4QmRPg6rmRMOja+1eOwhRW3uIgI4fURJ3EKxLdU+RpbmkZMR/8F/yfj+cfP/wdj9bPKQ+HgmH1KEJxCfIAYWZZJpM9N0IuCCTdVcPnFA3HFWs+LUw9q37kF0H62qTbTXEym1UGt9RIecrAUytVR0lCp3gOfnbOSbtVWMP6iQn00c2K4+9lpvkC3VXh6auQZfMMI1kw7isN651PlDTP1kNTvr/fzkqL4cN7gYfzjKY7PWsnpnAycP78mPj+hDNArPzN7AvA3VHDWwgCsnDsRmMfH2oq18sGQ7w0qyueGEg3HazHy+qpKXvt1ESW4Gt548mHynlWVb63n8s7Vk2MzcdtIQDirOxGGVWj7C0CHrDFK4yCKt9egOOVkLJBmIjhQMR/EEw2TaLCltRp+KKrefqIYeTYrW1XmDBMLRuLYGfwhPIEJBlg1r4/RPXzBMvS9MToaFDJtxRxGJaur9ITKs5rgP91pvEJvZFFdxtN4XwqQgq4stIhOdr6PWGbREqoaI/ZLNYsJm6dhSDEXZiZVLc5OUe8hyWBM+tDNsu5PALmaTSlouIi9JW6q7pQnRlKzmEKIdqtwBqr1BLCZFntNKQaadak+AWm+IcFRTkGmjaA9bQrr9Idz+MC5PkJ7ZdvKcVmyWxC6dUCRCtSdEhTtAQaaNHIelVaUjXJ4AdSnEI7q3jkwGGzvwXEJ0eRX1fi5++jvWVBjloMcfVMDDF4zm1te/Z/ZaY03moOIsXv35uLiuITC6h16du4W/fViG1pBpM/Pq1eMZWZpYiG3l9gYu+NccPMEISsGvTzuUi8f2S6kbqKohwE2vLGRO49TWg3sY8RQnuXMR3Vsq+xn8aG8/u47TWsveBqLbiEY1byzYEksEALXeEIs218QSAcC6ygb+M29LwnRVdyDMfTNWxmYEeYIR7nxrCa6G+KmgroYAd7y1GE/jFFit4f4Zq3D7wynFuWhTTSwRAKytaOD1+Vti9YuE2CWVO4Nk+xjsIvsZiG4pHI2yYps7rq1njoNVO90Jx67YXk8oEo3bocsbjCQkiI1VXiLNJnREopqNVd6ENm+SiqbJrEwWzzY34WgUm+wYJppIZT+DZPsYyH4GoluzWcycf1RpXNuS8lpOGZY4r//8MX0TpndmOywUN+u7P/WwnmQ2GzjOtFs49bD4KqXFWfaEBWt7ckqS/RXOP6o06diE6N5aNWaglDoDGA7EOhy11n/q6KCE2B+MKs3j3h8exlNfrsNuMXPHKUMozrbz9KVjuG/GSnyhCFdPOogj+iWOAxRl2vnPNeP53TvLWFvRwIlDe3DbyYPJtCcmg7tOH4bdYmZmWQUH98ji3nMOozAztUHgklwH/26MJxCOcM2kQYxKMi4hRGv2M3gScALHA08D5wJztdZXpi+85GSdgegqIpEo1d4gCkVhlg2lFFprXJ4gWmvynba9bnZT6w0SDEfJslvi1go05wuGcfvD2CympNNJ96ZpPAVOW9Jy1qJ76Kh1BkdrrUcqpZZorf+olPoHMl4gujmz2ZQwM0cplfL0zVQ/2JOtPUhVa+IR3Vdr/nb5Gh+9SqnegAsYuJfjhUhZuKqKqM+Hstsx5+Zisne9Dy9XQwBfKILVZCLLYSHTbqHWG8QbNIrJOW0WWfAl9lutSQbvK6XygAeAhRgziZ5OS1SiWwlu3szmq35OaPNmlNNJ77/cS9bkyZiczs4OLWZnvZ+rXpjP0q11WM2KW08awo+P6MOv317KrJUVKAUXHNWP208ZTEGK/flCdCWt6Ty8X2tdq7V+C+iPsQfyvekJS3QX4do6tt99N6HNmwHQXi9b77iTiDtxSmRn8YUiPDpzDUu31gEQimjum7GSyoYA36031hRoDa/O3UzZ9q4TtxCt0ZpkMGfXf2itA1rruqZtQrSFDgXxL1se3xgKEamvT/6GTuANhFm4uTahfeV2Nz2brSyev7E64Tgh9geprEDupZQ6EshQSo1WSh3R+HMcxuwiIdrM5HDgnDA+rk1lZGDOze2kiBJlO6wc12yfAaVgZGkuW2t9ce2TB8cfJ8T+IpUxg1MwtrgsBaY2aa8H7kpDTKIbMWdn0+vuu9lWX4937jwsvXvT5/77ulQysFlMXHHMQDa6vMxYtp08p40/nz2cPKeVi8b24+XvNmM1K35x4iEMKMrs7HCFaJPWrDP4ceN4QaeTdQYHnnBtLToQRJlNmAsKUKauNxe+3hfCF4qggPxMY/8BbzBMQ2OdoNwMK3bZSEZ0YR21zmC2UuoZoLfW+jSl1DBggtb6mQ6JUnRrlryuvyo2J8OaMHXUabPgbOP8fyG6ktZ8/XoO+Ajo3fh8NfDLvb1BKfWsUqpCKbVsD68rpdQjSqm1SqklSql9sm2mOLB4A2G21frYVuujzhfc43HRaDR2XEWSzeObqvUG2Vnvp9IdoLW7AQbDUSrcfirq/XgDxl1DOBKl0u1nZ70ftz/UqvMJsS+05itNkdb6daXUbwC01mGlVEulE58HHgOm7eH104BDGn/GAf9sfBQiJRVuP9O/38YjM9cQCEc5f0xfbjrh4IT9A3yhMMu31nPbG4vZ5PIy/qACppw3itL8xDkQO+p83PL6Yuasc9G3IIOHfnI4I/rkplTcrdYb5J1FW5n68WqCkSgXj+vHdccNYtHmWn77zjJcngCnjyjhD2cNl1XBoktpzZ2BRylVSOP2lkqp8UDd3t6gtf4S2Ntcu7OBadrwLZCnlCppRUyim9te6+feD8qo94cJhKO8+O0mZq6sSDiuxhPiiufnsclllIP+dn01v31nGZXu+DuEel+I3727jDnrjPUDW6p9XPrMXGq8qX2b31Lt44//XYE7YMTz0rebqfOFufalBVQ2BIhqeH/Jdp75aj3BcLSdv70QHac1yeBWYDpwkFJqNsa3/Zvaef0+wJYmz8sb24RIyRerKxPaZq2soN4X/+HtCYSpb7YhzJx1LkKR+C4gfzjCN+tccW2eYCThfHvy5Zr4eHrnOVi6tZbme8nMWlkp3UWiS2lNMlgBvAPMA3YC/8YYN2gPlaQtaQetUupqpdR8pdT8ysrEDwDRPR3RLz+hbXS/PDJt8V06TpsFuyX+r/uw3jmYVPxfQavZxPDeOXFtNrOJ7BRrDjWPp8IdYHDP7ITjRvXNlYFn0aW0JhlMwyhB8VfgUYx+/hfbef1yoG+T56XAtmQHaq3/pbUeo7UeU1wsC3uE4ZCeWZw/pi+7PtMnDCrkx0eUJpRpznaYmXLeKJyNSaJ3roP7zx1Jr9z4sYV8p437zx1FaX4GABlW4305eykv3dSQXllccNTueI7sl0dRlo07Tx2C1Ww0Di3J5taTBpNhk2mooutozTqDxVrrUS21JXnfAOB9rfVhSV47A7gROB1j4PgRrfXYlmKRdQaiqaqGAP5QhGhUY7eaE0pE7OL2h4yxhVCEDKuZ4iw7Fkvi9yGtNVUNQbzBMA6rmdwMa8JOZXtT7wvhCYSJao3TZiE/00ZDIEyDP0QoosmwmWXwWHSKjlpnsEgpNb5xoBel1DhgdgsXfhU4DihSSpUD9wBWAK31k8D/MBLBWsAL/KwV8QgBkPIHa7bDSraj5e4epRTF2XagbR/YydYjZNktZKV4dyFEZ2jN385xwKVKqc2Nz/sBZUqppYDWWo9s/gat9YV7O6E2bktuaEUMQggh0qA1yeDUtEUhhBCiU6WcDLTWm9IZiBBCiM7T9aqBCSGE2OckGQghhJBkIIQQQpKBEEIIJBkIIYRAkoEQQggkGQghhECSgRBCCCQZCCGEQJKBEEIIJBkIIYRAkoEQQggkGQghhECSgRBCCCQZCCGEQJKBEEIIJBkIIYRAkoEQQggkGQghhECSgRBCCCQZCCGEQJKBEEIIwNLZAXQHkYYGwlVVeL7+GvvBB2MfPBhLQUFnhyWEEDGSDNJMa413wQLKr70OtAYg84Tj6f2Xv2DJz+/k6IQQwiDdRGkWcbmouO/+WCIA8Mz6jKjb3YlRCSFEPEkGaaa1JurxJLYHg50QjRBCJCfJIM3M+fkUXHZpXJtt4ADMeXntOm/E7WbLDTcSkTsMIUQHkDGDNDNZLOT+6EdYS0qoe2869iGDyb/4YixFRe06b8OsWTTMnEnDZ5+Re9ZZHRStEKK7kmSwD1jy8sg57TQyJ03CZLejLO3/Y6996+3YoyQDIUR7STLYh8yZmW1+76afXYF3zpzdDVYrAN6FCyk7dGis2TlhAv2fe7bN1xFCdE9pHzNQSp2qlFqllFqrlPp1ktcvV0pVKqW+b/y5Kt0xdQU6EiFcWYln7jz8q1YRrq7e6/FF11yDcjh2N4RC8Y+AcjgouvbadIQrhDjApfXOQCllBh4HTgLKgXlKqela6xXNDn1Na31jOmPpakLbtrHxvPOJ1NYCkDnpWHr//e97XIyWOX4cfZ98ki3XXov2+xNeVw4HfZ96isxxY9MatxDiwJTuO4OxwFqt9XqtdRD4D3B2mq/Z5UW8XioefiSWCAA8X35FaMuWvb4vc/w4+jw4FWW3x7Uru50+D06VRCCEaLN0J4M+QNNPuPLGtuZ+rJRaopR6UynVN9mJlFJXK6XmK6XmV1ZWpiPWfUYHg4S3bk1oD23f0eJ7o243mM1gMhndRiYTmM2yiE0I0S7pTgYqSZtu9vy/wACt9UjgU+CFZCfSWv9Laz1Gaz2muLi4g8Pct8y5ueSdf15cm7LbyTh8VIvvrX3zLbTPh33IEEoffwz7kCFony82u0gIIdoi3bOJyoGm3/RLgW1ND9Bau5o8/TdwX5pj6nRKKbKOP56ef7iH2ldewVxQSM8778CcQvE6U1YWPe64nYLLLkOZTGSOH0/1Cy/gXbBgH0QuhDhQKa2bf1HvwJMrZQFWAycCW4F5wEVa6+VNjinRWm9v/O9zgDu11uP3dt4xY8bo+fPnpy3ufUVHIkRqa1EWC+bc3M4ORwhxgFNKLdBaj0n2WlrvDLTWYaXUjcBHgBl4Vmu9XCn1J2C+1no68Aul1FlAGKgGLk9nTF2JMpuxFBZ2dhhCCJHeO4N06ZQ7A389BBsg5AN7NmT1SH5cwA3+Ogg0gD0LrFngyAFvpfGa1Qn2HLBnEa5yEfV6UFYbpkwn5pycpKcM19WhPR50JILJ6ZQEIoRok067Mzhg+Gph7r/g87+BjkJeP7jsfcjvH39cJAzbF8OrF0Kg3vjg//Ez0PMwePYkcO8AkwVO/TuRg3/ApkuvJLh+PShF/k9/StEN12NpVsAuXF3Nzvvuo/696QA4hg+j71NPtbu2kRBCNCVVS1Phq4HP/mIkAoDazfDRb8HfbDqnezu8fbWRCABCXnj3OmjYbiQCgGgYPrwDvLUEN2ww2rSm5sUXCe/YmXDp4Lp1sUQA4F++gprXXkeHwx39WwohujFJBqmoS7IYrGI5hH3NGjXUN1s/4K/dnURih0XRDZUJi8cC69clXMa/oiyxbckSooFAKpELIURKJBmkovBgMNvi24acbvT9N6XM0OeI+LaCgxJXVtiyUDm94stKmExkjByZcOnMiUcntGWffnq7it4JIURzkgxSkZEPl7xrJAWLAw6/CCb+EqyO+ONy+8C5z8HAScbYQN+xcOFrUHgIDDvHSCg9hsJl/wVnIfk//SkqIwNrnz6UPvFE0nUGlp496T3lASw9emDKyqLwmmvImnTsPvrFhRDdhcwmSpXW4Kk0Hm2ZxkyhPanftrtrKLfUeAy4IegFZYIsYwV11Ocj2tAASmEuKECZkudmHYkQqakBDabsbEwOe9LjhBBib2Q2UUdQas/TSZvL6Z3YZs82fpowZWRgysho+dJms8weEkKklSSDVAW94KuGaMTo7skpgZC/8W4hYowX5PXdfQcRCYDJBpnFRjG5ZHw1xnlNJnDkJ3Y7CSHEPiLJIBUeF6z5GGbcaSwo6380/Pg5cK2Bt68ypo32GAY/edHoBnr5XHCtg9y+8JOXoNcIMJnjz9lQAe/dYJzXlgkn/QlGnAcOKUshhNj3ZAA5FUE3vHe9kQgANn0Dnp3w2sW71w9UrIB3roUt84xEAMaU1Fd/Ap6q+POFg/Ddk0YiAAh64IPbjAQhhBCdQJJBKqrWJq4VCPl2J4ddyudBbrPxAvcOCDfbmSzYAOs/T7zOjiXtDlUIIdpCkkEqCg82BpCbsmYkrjPocyTUb49vy+ppTEdtypZlTD9trueI9scqhBBtIMkgFY5s+MGju2cD9R0LmT3g/BeNAWKAgkFgy4aiwZA/wGjL6Q0XvgrOZjOBLDYYfz0cdLzx3OqEU/+e+mwlIYToYLLOIFUBt1FaIhoBs92YTRT0gbfKqDe06kP46DdwzlMw6AQIB4wPfWdR4uDxLt4ao36RyQSOPONuQwgh0kTWGXSEJOsEsGWArXEjt1UfGI+LXoJRF6R2Tmc+kN9hIQohRFt1r2QQ8hn7EijV+I19D71kkRA0NFYQdeTtXm1cuxlQRrfOmz+DDV/sfo/Jajxu+Q7+0GR66MDJcNl043zhoNGW17dJPHXGdNTM4sRxiUY6EiFcU4PSGlNODia7rEAWQnSs7pMMPFXw9UOwaBo4C+G0+6HfhMSyEg2VsPFL+PQPRtfQkT+D8ddB1Wpj+mddOQz7IYy9xvjg3zVTKBoyHiPB3edSJhh1oTFldMavYdUMKBwEP3jY2BPh6wdh4YuQWQSnP2DEY4svQBdxu/F8PZudDzyA9nrJv/hi8n96MZZ8uaMQQnSc7jGAHI3A0jdgzqPGN/Hq9fDK+eB1JR7rrYI34XoyIgAACnBJREFUrzDuAnw1MOcxo///pR9B5UpjWuj3L0HP4S338esofDUFXGth2dvG+MCOpTDtbOOccx439j6oXg8vn5e4HgEIV1Sw9ZZbCG/bRqS2lqrHH8cze3YH/cEIIYSheyQDfz0sfye+TUdhy9zEY9d+Gv+8/0SoWmV8eDcV9hvJoiWutYndPwG3cbeQf1B8PFsXJLzd83XiB3/9f98n4vG0fG0hhEhR90gG1gyjJERzxYMT25ofV7HC6NJJdk5L87571fjThCPXqFsUd5jJGLOo3RzfXnRIwmXsQw9NaHMcdpiMGwghOlQ3SQYOOPY2Y/HYLkf+DHJKE48tGgLDz9n9PLPIWCQ28Ze7v+Hn9DH2Kzj9H8Q+/JXJWCtQOGj3ey0OOOtxY3B413oEkxn+7x7j/QVN9lAec2XSaqf2gw8m5/TTdj8fMoT8Cy5AWbrPcI8QIv261zqDhgqji8ZiNz7gM/KSH+feYcz0iYaNAd2c3sbK4mjIqDJqy4SsEmN84d1rjbuJsT8HRw6EgjD3KWNw+Yf/NNYk2LLB7zKubcsyEkFOSbN4Mo1NdJKI1NYa3ULhMKasLCyFha3/3YUQ3d7e1hl0r2QghBDdmCw6a4m32nh0Jm472aKAx5gl5Mg1VhyDsbI4UG/cBWTKt3ghRNfXvZOBv97ozvniPqMv//jfQe/Re9/Ssqm6cpj5J6Pa6ODTYPxNEPXDV1Nh41fQZwwc/5vdW18KIUQX1b2TgWutsRHNLtN+ANd9Cz0SZ/AkaKiAF38IVWuM5xVlMPoSmHEHrPnEaKtcCZVlcP40SQhCiC6te8wmSiYahfnPxrdpDUteS+39Qc/uRLCL2ZK4TmHrAqO8hRBCdGHdNxmYTPFTTXfJH5ja+y32JNVItVHLqClrhjF7SAghurDumwzAqC66a+8BMPYiGHJKau+1Z8OkO3Y/N5lBN641aLri+PjfgcXZIeEKIUS6yNRS906jNpDJbCSG1mww46sBj8t4f89hxjoBf71RqmLnMig+FKyZiVthCiFEJ5CppXuT3dP4aYuMfOOnqEl3066qowUpdjcJIUQX0L27iYQQQgD7IBkopU5VSq1SSq1VSv06yet2pdRrja9/p5QakO6YhBBCxEtrMlBKmYHHgdOAYfx/e/cfa3Vdx3H8+RIwfqhR465RSFgWzlwDJPtBcxbGajmtRg36MW0t27Qmc2XlmkZbW66t2mxRBCQl4RSjmXMSm1npILmXUCD8w5yOqxRQFtAKBr364/thnl24wD3nnr73nPt6bHf3ez7nc77f92d397zP93O+3/cHFku6eEC3zwAv2b4Q+C5wRztjioiIE7X7zOAy4Bnbz9o+AtwDXDOgzzXA6rK9DpgvDbL+Y0REtEW7k8HrgN0Nj/tL20n72D4K/BM4oaCPpOsl9Urq3bdvX5vCjYgYndqdDE72CX/gtaxn0gfby23PtT23p6dnWIKLiIhKu5NBP3B+w+NpwIuD9ZE0Fngl8Pc2xxUREQ3afZ/BFuBNki4AXgAWAR8f0OcB4FpgE7AQeMSnuROur69vv6TnW4hrCnDi6vOdqZvGAt01noxl5Oqm8QxlLK8f7Im2JgPbRyV9HtgAjAFW2d4p6RtAr+0HgJXAzyQ9Q3VGsOgM9tvSPJGk3sHuwus03TQW6K7xZCwjVzeNZ7jG0vY7kG0/BDw0oO22hu3/AB9tdxwRETG43IEcERGjNhksrzuAYdRNY4HuGk/GMnJ103iGZSwdWbU0IiKG12g9M4iIiAZJBhERMbqSgaRVkvZK2lF3LK2SdL6k30jaJWmnpJvqjqlZksZLekLSk2UsS+uOqVWSxkj6o6QH646lVZKek7Rd0jZJw7SqVD0kTZa0TtLT5X/nnXXH1CxJM8vf5PjPAUlLmt7faPrOQNLlwCHgp7YvqTueVkiaCky1vVXSuUAf8CHbf6o5tCErhQkn2T4kaRzwGHCT7c01h9Y0STcDc4HzbF9VdzytkPQcMNd2x9+kJWk18HvbKySdDUy0/Y+642pVqRD9AvB2203dkDuqzgxs/44uKXVhe4/trWX7ILCLE4sAdgRXDpWH48pPx35KkTQN+CCwou5Y4mWSzgMup7rRFdtHuiERFPOBPzebCGCUJYNuVRYEmg38od5ImlemVbYBe4GNtjt2LMD3gFuA/9YdyDAx8GtJfZKurzuYFrwB2Af8pEzhrZA0qe6ghskiYG0rO0gy6HCSzgHuB5bYPlB3PM2yfcz2LKpihpdJ6shpPElXAXtt99UdyzCaZ3sO1SJVN5bp1k40FpgDLLM9G/gXcMLqi52mTHddDdzXyn6SDDpYmV+/H1hj+xd1xzMcymn7o8D7aw6lWfOAq8s8+z3AeyXdXW9IrbH9Yvm9F1hPtWhVJ+oH+hvOOtdRJYdO9wFgq+2/trKTJIMOVb50XQnssv2duuNphaQeSZPL9gTgSuDpeqNqju2v2p5mewbVqfsjtj9Zc1hNkzSpXKBAmVJZAHTk1Xi2/wLsljSzNM0HOu6Ci5NYTItTRPB/KFQ3kkhaC1wBTJHUD9xue2W9UTVtHvApYHuZawe4tRQG7DRTgdXlioizgHttd/wlmV3iNcD6shLtWODnth+uN6SWfAFYU6ZWngU+XXM8LZE0EXgf8LmW9zWaLi2NiIiTyzRRREQkGURERJJBRESQZBARESQZREQESQYREUGSQQQAkq6T9Noz6HeXpIWneP5RSXOHObbJkm5oeHxFN5TGjpElySCich1w2mRQk8nADaftFdGCJIPoSpJmlAVMVkt6qixoMlHSpZJ+WypwbpA0tXzSn0t1Z+o2SRMk3SZpi6QdkpaX8h9DjWGBpE2Stkq6rxQVPL5YzNLSvl3SRaW9R9LG0v4jSc9LmgJ8C3hjie3bZffnNCzSsqaZ+CIaJRlEN5sJLLf9VuAAcCNwJ7DQ9qXAKuCbttcBvcAnbM+y/W/g+7bfVhZBmgAMaYGa8ib+NeDKUvGzF7i5ocv+0r4M+GJpu52qltEcqoJw00v7V6hq1c+y/aXSNhtYAlxMVZp53lDiixhoVNUmilFnt+3Hy/bdwK3AJcDG8kF6DLBnkNe+R9ItwETg1cBO4FdDOPY7qN6oHy/HOhvY1PD88SqzfcBHyva7gQ8D2H5Y0kun2P8TtvsBSm2qGVQrxEU0JckgutnAwlsHgZ22T7nuraTxwA+olnrcLenrwPghHltUi/QsHuT5w+X3MV7+PxzKVM/hhu3GfUQ0JdNE0c2mNyx4vhjYDPQcb5M0TtJbyvMHgXPL9vE3/v1lnn/Qq4dOYTMwT9KF5VgTJb35NK95DPhY6b8AeNVJYotoiySD6Ga7gGslPUU11XMn1Rv7HZKeBLYB7yp97wJ+WKZcDgM/BrYDvwS2DPXAtvdRXaG0thx/M3DRaV62FFggaSvVgiV7gIO2/0Y13bSj4QvkiGGVEtbRlcq60A+WL4A7gqRXAMdsHy1nL8vKUqARbZd5xoiRYzpwr6SzgCPAZ2uOJ0aRnBlENEHSeuCCAc1ftr2hjngiWpVkEBER+QI5IiKSDCIigiSDiIggySAiIoD/Af3FYGu8lS7pAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "random.seed(40)\n",
    "c1 = Center(iris.loc[:, ['petal_length', 'petal_width']].values)\n",
    "c2 = Center(iris.loc[:, ['petal_length', 'petal_width']].values)\n",
    "c3 = Center(iris.loc[:, ['petal_length', 'petal_width']].values)\n",
    "c4 = Center(iris.loc[:, ['petal_length', 'petal_width']].values)\n",
    "new_centers = compute_centers_after_N_iterations(\n",
    "    iris, ['petal_length', 'petal_width'], [c1, c2, c3, c4], 12)\n",
    "print(\n",
    "    f\"inertia: {inertia(iris, new_centers)}, distortion: {distortion(iris, new_centers)})\"\n",
    ")\n",
    "plot_centers_and_colorized_data(iris, new_centers)\n",
    "plt.savefig(\"k4_example3.png\", bbox_inches=\"tight\", dpi=300)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "inertia: 44.95723374524917, distortion: 1.254497095901379)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "random.seed(75)\n",
    "c1 = Center(iris.loc[:, ['petal_length', 'petal_width']].values)\n",
    "c2 = Center(iris.loc[:, ['petal_length', 'petal_width']].values)\n",
    "c3 = Center(iris.loc[:, ['petal_length', 'petal_width']].values)\n",
    "c4 = Center(iris.loc[:, ['petal_length', 'petal_width']].values)\n",
    "new_centers = compute_centers_after_N_iterations(\n",
    "    iris, ['petal_length', 'petal_width'], [c1, c2, c3, c4], 12)\n",
    "print(\n",
    "    f\"inertia: {inertia(iris, new_centers)}, distortion: {distortion(iris, new_centers)})\"\n",
    ")\n",
    "plot_centers_and_colorized_data(iris, new_centers)\n",
    "plt.savefig(\"k4_example4.png\", bbox_inches=\"tight\", dpi=300)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "random.seed(20)\n",
    "np.random.seed(20)\n",
    "iris_small = iris.sample(7)\n",
    "c1 = Center(iris_small.loc[:, ['petal_length', 'petal_width']].values)\n",
    "c2 = Center(iris_small.loc[:, ['petal_length', 'petal_width']].values)\n",
    "new_centers2 = compute_centers_after_N_iterations(\n",
    "    iris_small, ['petal_length', 'petal_width'], [c1, c2], 12)\n",
    "plot_centers_and_colorized_data(iris_small, new_centers2)\n",
    "plt.savefig(\"distortion_computation.png\", dpi=300, bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "73     0.837778\n",
      "129    0.121111\n",
      "143    0.547778\n",
      "dtype: float64\n",
      "47    4.765\n",
      "74    0.845\n",
      "67    0.425\n",
      "89    0.425\n",
      "dtype: float64\n"
     ]
    }
   ],
   "source": [
    "def print_distances_squared(data, centers):\n",
    "    for center_num in range(len(centers)):\n",
    "        data_in_this_cluster = data[data[\"cluster\"] == center_num]\n",
    "        print(centers[center_num].dist(\n",
    "            data_in_this_cluster[[\"petal_length\", \"petal_width\"]])**2)\n",
    "\n",
    "\n",
    "print_distances_squared(iris_small, new_centers2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6.409399633729917"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "inertia(iris_small, new_centers2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.7693026035868602"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "distortion(iris_small, new_centers2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal_length</th>\n",
       "      <th>sepal_width</th>\n",
       "      <th>petal_length</th>\n",
       "      <th>petal_width</th>\n",
       "      <th>dist1</th>\n",
       "      <th>dist2</th>\n",
       "      <th>cluster</th>\n",
       "      <th>dist0</th>\n",
       "      <th>dist3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>47</td>\n",
       "      <td>4.6</td>\n",
       "      <td>3.2</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.2</td>\n",
       "      <td>2.182888</td>\n",
       "      <td>4.783274</td>\n",
       "      <td>1</td>\n",
       "      <td>4.334487</td>\n",
       "      <td>3.637045</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>73</td>\n",
       "      <td>6.1</td>\n",
       "      <td>2.8</td>\n",
       "      <td>4.7</td>\n",
       "      <td>1.2</td>\n",
       "      <td>1.274755</td>\n",
       "      <td>1.415877</td>\n",
       "      <td>0</td>\n",
       "      <td>0.915302</td>\n",
       "      <td>0.401564</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>74</td>\n",
       "      <td>6.4</td>\n",
       "      <td>2.9</td>\n",
       "      <td>4.3</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.919239</td>\n",
       "      <td>1.691724</td>\n",
       "      <td>1</td>\n",
       "      <td>1.233333</td>\n",
       "      <td>0.545981</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>129</td>\n",
       "      <td>7.2</td>\n",
       "      <td>3.0</td>\n",
       "      <td>5.8</td>\n",
       "      <td>1.6</td>\n",
       "      <td>2.438237</td>\n",
       "      <td>0.508523</td>\n",
       "      <td>0</td>\n",
       "      <td>0.348010</td>\n",
       "      <td>1.042109</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>67</td>\n",
       "      <td>5.8</td>\n",
       "      <td>2.7</td>\n",
       "      <td>4.1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.651920</td>\n",
       "      <td>2.017764</td>\n",
       "      <td>1</td>\n",
       "      <td>1.535506</td>\n",
       "      <td>0.888636</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>89</td>\n",
       "      <td>5.5</td>\n",
       "      <td>2.5</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.651920</td>\n",
       "      <td>1.960509</td>\n",
       "      <td>1</td>\n",
       "      <td>1.520234</td>\n",
       "      <td>0.814145</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>143</td>\n",
       "      <td>6.8</td>\n",
       "      <td>3.2</td>\n",
       "      <td>5.9</td>\n",
       "      <td>2.3</td>\n",
       "      <td>2.797320</td>\n",
       "      <td>0.222950</td>\n",
       "      <td>0</td>\n",
       "      <td>0.740120</td>\n",
       "      <td>1.340931</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     sepal_length  sepal_width  petal_length  petal_width     dist1     dist2  \\\n",
       "47            4.6          3.2           1.4          0.2  2.182888  4.783274   \n",
       "73            6.1          2.8           4.7          1.2  1.274755  1.415877   \n",
       "74            6.4          2.9           4.3          1.3  0.919239  1.691724   \n",
       "129           7.2          3.0           5.8          1.6  2.438237  0.508523   \n",
       "67            5.8          2.7           4.1          1.0  0.651920  2.017764   \n",
       "89            5.5          2.5           4.0          1.3  0.651920  1.960509   \n",
       "143           6.8          3.2           5.9          2.3  2.797320  0.222950   \n",
       "\n",
       "     cluster     dist0     dist3  \n",
       "47         1  4.334487  3.637045  \n",
       "73         0  0.915302  0.401564  \n",
       "74         1  1.233333  0.545981  \n",
       "129        0  0.348010  1.042109  \n",
       "67         1  1.535506  0.888636  \n",
       "89         1  1.520234  0.814145  \n",
       "143        0  0.740120  1.340931  "
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris_small"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Example of Distortion Failing to Match Intuition"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "c1.coordinates = [1.2, 0.15]\n",
    "c2.coordinates = [4.906000000000001, 1.6760000000000006]\n",
    "iris[\"dist1\"] = c1.dist(iris[[\"petal_length\", \"petal_width\"]])\n",
    "iris[\"dist2\"] = c2.dist(iris[[\"petal_length\", \"petal_width\"]])\n",
    "iris[\"cluster\"] = iris[[\"dist1\", \"dist2\"]].apply(get_cluster_number, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_centers_and_colorized_data(iris, (c1, c2))\n",
    "plt.savefig(\"intuitive_clustering.png\", dpi=300, bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "inertia: 94.41444765828233, distortion: 1.0979144373055645)\n"
     ]
    }
   ],
   "source": [
    "print(\n",
    "    f\"inertia: {inertia(iris, [c1, c2])}, distortion: {distortion(iris, [c1, c2])})\"\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "average_c1_length = np.mean(iris[iris[\"cluster\"] == 0])[\"petal_length\"]\n",
    "average_c1_width = np.mean(iris[iris[\"cluster\"] == 0])[\"petal_width\"]\n",
    "c1.coordinates = (average_c1_length, average_c1_width)\n",
    "\n",
    "average_c2_length = np.mean(iris[iris[\"cluster\"] == 1])[\"petal_length\"]\n",
    "average_c2_width = np.mean(iris[iris[\"cluster\"] == 1])[\"petal_width\"]\n",
    "c2.coordinates = (average_c2_length, average_c2_width)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_centers_and_black_data(iris, (c1, c2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "iris[\"dist1\"] = c1.dist(iris[[\"petal_length\", \"petal_width\"]])\n",
    "iris[\"dist2\"] = c2.dist(iris[[\"petal_length\", \"petal_width\"]])\n",
    "iris[\"cluster\"] = iris[[\"dist1\", \"dist2\"]].apply(get_cluster_number, axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_centers_and_colorized_data(iris, (c1, c2))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "inertia: 87.28316581620376, distortion: 0.9789681402782842)\n"
     ]
    }
   ],
   "source": [
    "print(\n",
    "    f\"inertia: {inertia(iris, [c1, c2])}, distortion: {distortion(iris, [c1, c2])})\"\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Agglomerative Clustering"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [],
   "source": [
    "random.seed(42)\n",
    "np.random.seed(42)\n",
    "iris_small = iris.sample(13).loc[:, 'sepal_length':'petal_width'].reset_index(\n",
    "    drop=True)\n",
    "iris_small = iris_small.drop(8).reset_index(drop=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x15e1d85ce08>"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.scatterplot(data=iris_small,\n",
    "                x=\"petal_length\",\n",
    "                y=\"petal_width\",\n",
    "                color=\"black\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [],
   "source": [
    "iris_small[\"cluster\"] = np.array(range(0, len(iris_small)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal_length</th>\n",
       "      <th>sepal_width</th>\n",
       "      <th>petal_length</th>\n",
       "      <th>petal_width</th>\n",
       "      <th>cluster</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>0</td>\n",
       "      <td>6.1</td>\n",
       "      <td>2.8</td>\n",
       "      <td>4.7</td>\n",
       "      <td>1.2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>1</td>\n",
       "      <td>5.7</td>\n",
       "      <td>3.8</td>\n",
       "      <td>1.7</td>\n",
       "      <td>0.3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>2</td>\n",
       "      <td>7.7</td>\n",
       "      <td>2.6</td>\n",
       "      <td>6.9</td>\n",
       "      <td>2.3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>3</td>\n",
       "      <td>6.0</td>\n",
       "      <td>2.9</td>\n",
       "      <td>4.5</td>\n",
       "      <td>1.5</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>4</td>\n",
       "      <td>6.8</td>\n",
       "      <td>2.8</td>\n",
       "      <td>4.8</td>\n",
       "      <td>1.4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>5</td>\n",
       "      <td>5.4</td>\n",
       "      <td>3.4</td>\n",
       "      <td>1.5</td>\n",
       "      <td>0.4</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>6</td>\n",
       "      <td>5.6</td>\n",
       "      <td>2.9</td>\n",
       "      <td>3.6</td>\n",
       "      <td>1.3</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>7</td>\n",
       "      <td>6.9</td>\n",
       "      <td>3.1</td>\n",
       "      <td>5.1</td>\n",
       "      <td>2.3</td>\n",
       "      <td>7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>8</td>\n",
       "      <td>5.8</td>\n",
       "      <td>2.7</td>\n",
       "      <td>3.9</td>\n",
       "      <td>1.2</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>9</td>\n",
       "      <td>6.5</td>\n",
       "      <td>3.2</td>\n",
       "      <td>5.1</td>\n",
       "      <td>2.0</td>\n",
       "      <td>9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>10</td>\n",
       "      <td>4.8</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.4</td>\n",
       "      <td>0.1</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <td>11</td>\n",
       "      <td>5.5</td>\n",
       "      <td>3.5</td>\n",
       "      <td>1.3</td>\n",
       "      <td>0.2</td>\n",
       "      <td>11</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    sepal_length  sepal_width  petal_length  petal_width  cluster\n",
       "0            6.1          2.8           4.7          1.2        0\n",
       "1            5.7          3.8           1.7          0.3        1\n",
       "2            7.7          2.6           6.9          2.3        2\n",
       "3            6.0          2.9           4.5          1.5        3\n",
       "4            6.8          2.8           4.8          1.4        4\n",
       "5            5.4          3.4           1.5          0.4        5\n",
       "6            5.6          2.9           3.6          1.3        6\n",
       "7            6.9          3.1           5.1          2.3        7\n",
       "8            5.8          2.7           3.9          1.2        8\n",
       "9            6.5          3.2           5.1          2.0        9\n",
       "10           4.8          3.0           1.4          0.1       10\n",
       "11           5.5          3.5           1.3          0.2       11"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris_small"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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MYW8iEiMKeRFRGJMIS8SUwMHDqSoqIiOHTtSWlrK0qVLoy5JIqCQF4mpQYMGMXXqVH7605+ycuVKxowZE3VJEgGFvEhMTZkyhfPOO48zzjiDgoIC3ZLvEKX/1UWyXENL/wJ89NFHFBcXM3DgQPLz85kxY0bS+/z000/p27cvZsakSZPCKl0yQCEvksUaW/q3psbp1KkTTz31FFOnTuXTTz/lhhtuSHq/v/jFL9i8eXOIlUumKORFslhjS/9u31VFXl4eZ511FldccQWnnnoqixYtYtu2bc3uc9WqVdxxxx38/Oc/D7l6yYSMLTUsEicffvghkydP5tFHH2Xv3r0MGDAgktkrjS39+9TfnuTZJx5l0KBBbNq0ieeff55u3brRpUuXuvc1dBNpcMaMGcPEiRM55ZRTMvzTSBgU8iItcNlll/HnP/+Zq666iuOPP57nn38+kjoaW/q3+IgCXnzxRf74xz9SUFDAV7/6VW677TYSawbua/McuJrkc489yMaNG5kxYwavvfYakOjtV1RUUFxcHMnPKK1j7m1nCffS0lIvLy+PugyRJr311lv06dOH733ve8yaNYvc3Fxyc3MjqaWxsO7brajJlSErKvdw4V3LDvrjcNqHz/LrW2466P2jR49O6cStZJaZrXD30oa2qScv0oSGZq68+eabALz00ksUFhZSWFjItddem9T+fvvb31JSUkJBQQG9e/dm2rRpraqv/tK/y649nYUTypoNeGi8zfPN8y9k/vz5zJ8/v64nf/bZZzN+/PhW1SnRUciLNKKxmSu7d38KwK5du/jTn/5EWVkZt912G08//XST+1u/fj1XX301OTk5TJkyhc8++4zJkyezadOmVtVZu/Rvj84dKS4qSGpt99o2T309O3egX79+jBgxghEjRjBkyBAA+vTpw5e//OVW1SjRUciLNKKxmSuduyXuRf+1r32N4cOH8+1vfxuADRs2NLm/mpoaAHr06MGZZ57JkUceSUFBAe3btw/xp2hY7R2eaoO+ts2TOPmaMHToUNydO++8M+P1SfroxKtIIxpraRzXbyBf/OIXeeaZZ7j33nuZPXs2ubm5lJWV1b2voZkrffv25ZZbbuH666/nuOOOIycnh9mzZ2fshOaBNR1b3El3eDoE6EhepBGNtTQK2uUxb948+vTpwxVXXMEHH3zAnDlz6NevH9B4m2fr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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def text_location(data, line):\n",
    "    xloc = data[\"petal_length\"][line] + 0.05\n",
    "    yloc = data[\"petal_width\"][line] - 0.03\n",
    "    if line == 10:\n",
    "        yloc = yloc - 0.2\n",
    "    if line == 11 and data[\"cluster\"][line] == 11:\n",
    "        xloc = xloc - 0.4\n",
    "    if line == 11 and data[\"cluster\"][line] != 11:\n",
    "        xloc = xloc - 0.25\n",
    "    if line == 0:\n",
    "        yloc = yloc - 0.3\n",
    "    return xloc, yloc\n",
    "\n",
    "\n",
    "def plot_clusters(data):\n",
    "    p1 = sns.scatterplot(data=data, x=\"petal_length\", y=\"petal_width\")\n",
    "    for line in range(0, data.shape[0]):\n",
    "        xloc, yloc = text_location(data, line)\n",
    "        p1.text(xloc,\n",
    "                yloc,\n",
    "                str(data[\"cluster\"][line]),\n",
    "                horizontalalignment='left',\n",
    "                size='medium',\n",
    "                color='black',\n",
    "                weight='semibold')\n",
    "    plt.xlim(0, 7.25)\n",
    "    plt.ylim(0, 7.25)\n",
    "\n",
    "\n",
    "plot_clusters(iris_small)\n",
    "plt.savefig(\"agglomerative_start.png\", dpi=300, bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [],
   "source": [
    "from scipy.spatial import distance\n",
    "\n",
    "\n",
    "def dist_between_clusters(data, cnum1, cnum2):\n",
    "    cluster1 = data[data[\"cluster\"] == cnum1]\n",
    "    cluster2 = data[data[\"cluster\"] == cnum2]\n",
    "    return distance.cdist(cluster1[[\"petal_length\", \"petal_width\"]],\n",
    "                          cluster2[[\"petal_length\", \"petal_width\"]]).min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [],
   "source": [
    "def closest_clusters(data):\n",
    "    cluster_values = data[\"cluster\"].unique()\n",
    "    smallest_distance = float(\"inf\")\n",
    "    best_pair = [-1, -1]\n",
    "    for cnum1 in cluster_values:\n",
    "        for cnum2 in cluster_values:\n",
    "            if cnum1 == cnum2:\n",
    "                continue\n",
    "            cur_dist = dist_between_clusters(data, cnum1, cnum2)\n",
    "            if cur_dist < smallest_distance:\n",
    "                best_pair = [cnum1, cnum2]\n",
    "                smallest_distance = cur_dist\n",
    "\n",
    "    return best_pair"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [],
   "source": [
    "def merge_clusters(data, cnum1, cnum2):\n",
    "    data.loc[data[\"cluster\"] == cnum2, \"cluster\"] = cnum1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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MYW8iEiMKeRFRGJMIS8SUwMHDqSoqIiOHTtSWlrK0qVLoy5JIqCQF4mpQYMGMXXqVH7605+ycuVKxowZE3VJEgGFvEhMTZkyhfPOO48zzjiDgoIC3ZLvEKX/1UWyXENL/wJ89NFHFBcXM3DgQPLz85kxY0bS+/z000/p27cvZsakSZPCKl0yQCEvksUaW/q3psbp1KkTTz31FFOnTuXTTz/lhhtuSHq/v/jFL9i8eXOIlUumKORFslhjS/9u31VFXl4eZ511FldccQWnnnoqixYtYtu2bc3uc9WqVdxxxx38/Oc/D7l6yYSMLTUsEicffvghkydP5tFHH2Xv3r0MGDAgktkrjS39+9TfnuTZJx5l0KBBbNq0ieeff55u3brRpUuXuvc1dBNpcMaMGcPEiRM55ZRTMvzTSBgU8iItcNlll/HnP/+Zq666iuOPP57nn38+kjoaW/q3+IgCXnzxRf74xz9SUFDAV7/6VW677TYSawbua/McuJrkc489yMaNG5kxYwavvfYakOjtV1RUUFxcHMnPKK1j7m1nCffS0lIvLy+PugyRJr311lv06dOH733ve8yaNYvc3Fxyc3MjqaWxsO7brajJlSErKvdw4V3LDvrjcNqHz/LrW2466P2jR49O6cStZJaZrXD30oa2qScv0oSGZq68+eabALz00ksUFhZSWFjItddem9T+fvvb31JSUkJBQQG9e/dm2rRpraqv/tK/y649nYUTypoNeGi8zfPN8y9k/vz5zJ8/v64nf/bZZzN+/PhW1SnRUciLNKKxmSu7d38KwK5du/jTn/5EWVkZt912G08//XST+1u/fj1XX301OTk5TJkyhc8++4zJkyezadOmVtVZu/Rvj84dKS4qSGpt99o2T309O3egX79+jBgxghEjRjBkyBAA+vTpw5e//OVW1SjRUciLNKKxmSuduyXuRf+1r32N4cOH8+1vfxuADRs2NLm/mpoaAHr06MGZZ57JkUceSUFBAe3btw/xp2hY7R2eaoO+ts2TOPmaMHToUNydO++8M+P1SfroxKtIIxpraRzXbyBf/OIXeeaZZ7j33nuZPXs2ubm5lJWV1b2voZkrffv25ZZbbuH666/nuOOOIycnh9mzZ2fshOaBNR1b3El3eDoE6EhepBGNtTQK2uUxb948+vTpwxVXXMEHH3zAnDlz6NevH9B4m2fr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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_clusters(iris_small)\n",
    "plt.xlim(0, 7.25)\n",
    "plt.ylim(0, 7.25)\n",
    "plt.savefig(f\"agglomerative_start.png\", dpi=300, bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 432x288 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "i = 0\n",
    "while len(iris_small[\"cluster\"].unique()) != 2:\n",
    "    i += 1\n",
    "    cnum1, cnum2 = closest_clusters(iris_small)\n",
    "    merge_clusters(iris_small, cnum1, cnum2)\n",
    "    plot_clusters(iris_small)\n",
    "    plt.savefig(f\"agglomerative_merge{i}.png\", dpi=300, bbox_inches=\"tight\")\n",
    "    plt.clf()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Run on full dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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6UydOpVWrVrZ6ZgbRoeXe/0TjQYApWqxdevW8d577zFs2DAeeOABRowYwaxZswCrl89148YDVq55sG7+Dw9pz3dfzwesLomTJh3q048p+4bWsmVLcnNzS8xFC9C3/0BOuuwOTJDVVbJryyQKCwoI73I+Da+08vEXRCZz34P/sY8ZMGAAYN3su3fvzoUXXkifPn3s8qxevZqBAwdy8OBB3G43vXv3xu12290oj6SsfEVXv7SIXQfKn/hq69at9OrVi23btvHpp5/Spk0bANxuN19//TWLFy9m2bJldO3a1Z73t844mscGfy1aBaROdMnJySWqSTp06CAiIjNnzpQmTZpIUFCQ9Dy9tyxZ+YcUFnrlgw8+sOvsAwICxO12yy233GKfryhNc+MWrY95A+6RlkCXW07rY9X1x7XpLldcNdreVjSSFpDHH3+81ExXMTExcvrpp5dYFxERId98802531vx2beKV3cFt+guxh0ibrdbkpKS5JJLLrHLMH36dFm4cKGdsvnkk08ukWenoKBAxo8fL88//7yMGWPlGpowYYLf/w/4A9oGoFTtl5ycLD169LBvRHPnzpWFCxeKMUY6de0ujQddJzgDJLLVKbJ8615588237Pr0d955R8444wyrnvqzz0RE5KclKwUQd1J7CWzQXMBIRIvOfr35O5xOwRjxtEgXQJq3bifGGDtXT9Hfhg0byk8//SQpKSmletEU5em/7rrrZMqUKRIUFCSnn356ud/buHHj7NQLkS272gGgXvdh0vT8CXLfg/8psyfQgAEDyvwM69evl8LCQunQoYO43W6JioqSsWPHSk5OTnX9VzimNAAodRxITk6Wyy+/XLKysux1Rb1Rmv/jdkm+dY644lMFrN4on331vQAydOhQERGZOtVq3J06daqIiPy0xOp9U5TXJvak3jLxsWmHbna+zJWmjDlyK70c1tgb2bKbACUyhwYGBtpPK0U33TZt2pT47MOHDxdAXnjhBbn77rsFkC+++EJERHr06CGAZGRklPvdFTXw9uzTt0QvoO9/Xy9Ll/4miYmJEhISIvn5+SIismTJEgkKCpKHHnrIDjYnKg0ASlWj8nrmiIgcPHhQWrRoIYBcftXoEr1JkpOT7d4zRb+CS99wy+nTXp1L8T7zxQJA8Z4/gQ1b2K8Tk5Pl5JNPFjg09iA2NlbS0tLkjjvukIcf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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "iris_small = iris.copy()\n",
    "iris_small[\"cluster\"] = np.array(range(0, len(iris_small)))\n",
    "plot_clusters(iris_small)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [],
   "source": [
    "#my code is too slow\n",
    "#i = 0\n",
    "#while len(iris_small[\"cluster\"].unique()) != 2:\n",
    "#    i += 1\n",
    "#    print(i)\n",
    "#    cnum1, cnum2 = closest_clusters(iris_small)\n",
    "#    merge_clusters(iris_small, cnum1, cnum2)\n",
    "#plot_clusters(iris_small)\n",
    "#plt.savefig(f\"agglomerative_merge{i}.png\", dpi=300, bbox_inches = \"tight\")\n",
    "#plt.clf()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.cluster import AgglomerativeClustering\n",
    "clustering = AgglomerativeClustering().fit(iris[[\"petal_length\",\n",
    "                                                 \"petal_width\"]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
       "       1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int64)"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clustering.labels_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [],
   "source": [
    "iris[\"cluster\"] = clustering.labels_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.scatterplot(data=iris,\n",
    "                x=\"petal_length\",\n",
    "                y=\"petal_width\",\n",
    "                hue=\"cluster\",\n",
    "                legend=None)\n",
    "plt.savefig(\"agglomerative_output.png\", dpi=300, bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plot_clusters(iris)\n",
    "plt.savefig(\"agglomerative_output_numbers.png\", dpi=300, bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#from https://github.com/scikit-learn/scikit-learn/blob/70cf4a676caa2d2dad2e3f6e4478d64bcb0506f7/examples/cluster/plot_hierarchical_clustering_dendrogram.py\n",
    "from scipy.cluster.hierarchy import dendrogram\n",
    "\n",
    "\n",
    "def plot_dendrogram(model, **kwargs):\n",
    "    # Children of hierarchical clustering\n",
    "    children = model.children_\n",
    "\n",
    "    # Distances between each pair of children\n",
    "    # Since we don't have this information, we can use a uniform one for plotting\n",
    "    distance = np.arange(children.shape[0])\n",
    "\n",
    "    # The number of observations contained in each cluster level\n",
    "    no_of_observations = np.arange(2, children.shape[0] + 2)\n",
    "\n",
    "    # Create linkage matrix and then plot the dendrogram\n",
    "    linkage_matrix = np.column_stack([children, distance,\n",
    "                                      no_of_observations]).astype(float)\n",
    "\n",
    "    # Plot the corresponding dendrogram\n",
    "    dendrogram(linkage_matrix, **kwargs)\n",
    "\n",
    "\n",
    "plt.title('Hierarchical Clustering Dendrogram')\n",
    "plot_dendrogram(clustering, labels=clustering.labels_)\n",
    "plt.savefig(\"dendrogram.png\", bbox_inches=\"tight\", dpi=300)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Elbow Method"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.cluster import KMeans\n",
    "distortions = []\n",
    "inertias = []\n",
    "mapping1 = {}\n",
    "mapping2 = {}\n",
    "K = range(1, 10)\n",
    "X = iris[[\"petal_length\", \"petal_width\"]]\n",
    "\n",
    "for k in K:\n",
    "    #Building and fitting the model\n",
    "    kmeanModel = KMeans(n_clusters=k).fit(X)\n",
    "\n",
    "    distortions.append(\n",
    "        sum(\n",
    "            np.min(distance.cdist(X, kmeanModel.cluster_centers_, 'euclidean'),\n",
    "                   axis=1)) / X.shape[0])\n",
    "    inertias.append(kmeanModel.inertia_)\n",
    "\n",
    "    mapping1[k] = sum(\n",
    "        np.min(distance.cdist(X, kmeanModel.cluster_centers_, 'euclidean'),\n",
    "               axis=1)) / X.shape[0]\n",
    "    mapping2[k] = kmeanModel.inertia_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(K, distortions, 'bx-')\n",
    "plt.xlabel('Values of K')\n",
    "plt.ylabel('Distortion')\n",
    "plt.title('The Elbow Method using Distortion')\n",
    "plt.savefig(\"elbow.png\", dpi=300, bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Silhouette Scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>petal_length</th>\n",
       "      <th>petal_width</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <td>98</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    petal_length  petal_width\n",
       "98           3.0          1.1"
      ]
     },
     "execution_count": 84,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.query(\"petal_length < 3.2 and petal_length > 2\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "For n_clusters = 2 The average silhouette_score is : 0.6571856448729174\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.metrics import silhouette_samples, silhouette_score\n",
    "import matplotlib.cm as cm\n",
    "\n",
    "n_clusters = 2\n",
    "fig, ax1 = plt.subplots(1, 1)\n",
    "#fig.set_size_inches(18, 7)\n",
    "\n",
    "# The 1st subplot is the silhouette plot\n",
    "# The silhouette coefficient can range from -1, 1 but in this example all\n",
    "# lie within [-0.1, 1]\n",
    "ax1.set_xlim([-0.1, 1])\n",
    "# The (n_clusters+1)*10 is for inserting blank space between silhouette\n",
    "# plots of individual clusters, to demarcate them clearly.\n",
    "ax1.set_ylim([0, len(X) + (n_clusters + 1) * 10])\n",
    "\n",
    "cluster_labels = clustering.fit_predict(X)\n",
    "\n",
    "# The silhouette_score gives the average value for all the samples.\n",
    "# This gives a perspective into the density and separation of the formed\n",
    "# clusters\n",
    "silhouette_avg = silhouette_score(X, cluster_labels)\n",
    "print(\"For n_clusters =\", n_clusters, \"The average silhouette_score is :\",\n",
    "      silhouette_avg)\n",
    "\n",
    "# Compute the silhouette scores for each sample\n",
    "sample_silhouette_values = silhouette_samples(X, cluster_labels)\n",
    "\n",
    "y_lower = 10\n",
    "for i in range(n_clusters):\n",
    "    # Aggregate the silhouette scores for samples belonging to\n",
    "    # cluster i, and sort them\n",
    "    ith_cluster_silhouette_values = \\\n",
    "        sample_silhouette_values[cluster_labels == i]\n",
    "\n",
    "    ith_cluster_silhouette_values.sort()\n",
    "\n",
    "    size_cluster_i = ith_cluster_silhouette_values.shape[0]\n",
    "    y_upper = y_lower + size_cluster_i\n",
    "\n",
    "    color = cm.nipy_spectral(float(i) / n_clusters)\n",
    "    ax1.fill_betweenx(np.arange(y_lower, y_upper),\n",
    "                      0,\n",
    "                      ith_cluster_silhouette_values,\n",
    "                      facecolor=color,\n",
    "                      edgecolor=color,\n",
    "                      alpha=0.7)\n",
    "\n",
    "    # Label the silhouette plots with their cluster numbers at the middle\n",
    "    ax1.text(-0.05, y_lower + 0.5 * size_cluster_i, str(i))\n",
    "\n",
    "    # Compute the new y_lower for next plot\n",
    "    y_lower = y_upper + 10  # 10 for the 0 samples\n",
    "\n",
    "ax1.set_title(\"The silhouette plot for the various clusters.\")\n",
    "ax1.set_xlabel(\"The silhouette coefficient values\")\n",
    "ax1.set_ylabel(\"Cluster label\")\n",
    "\n",
    "# The vertical line for average silhouette score of all the values\n",
    "ax1.axvline(x=silhouette_avg, color=\"red\", linestyle=\"--\")\n",
    "plt.savefig(\"silhoutte_plot.png\", dpi=300, bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.14062817006789843"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "min(sample_silhouette_values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "For n_clusters = 3 The average silhouette_score is : 0.6571856448729174\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.cluster import AgglomerativeClustering\n",
    "clustering = AgglomerativeClustering(n_clusters=3).fit(\n",
    "    iris[[\"petal_length\", \"petal_width\"]])\n",
    "\n",
    "n_clusters = 3\n",
    "fig, ax1 = plt.subplots(1, 1)\n",
    "#fig.set_size_inches(18, 7)\n",
    "\n",
    "# The 1st subplot is the silhouette plot\n",
    "# The silhouette coefficient can range from -1, 1 but in this example all\n",
    "# lie within [-0.1, 1]\n",
    "ax1.set_xlim([-0.1, 1])\n",
    "# The (n_clusters+1)*10 is for inserting blank space between silhouette\n",
    "# plots of individual clusters, to demarcate them clearly.\n",
    "ax1.set_ylim([0, len(X) + (n_clusters + 1) * 10])\n",
    "\n",
    "cluster_labels = clustering.fit_predict(X)\n",
    "\n",
    "# The silhouette_score gives the average value for all the samples.\n",
    "# This gives a perspective into the density and separation of the formed\n",
    "# clusters\n",
    "silhouette_avg = silhouette_score(X, cluster_labels)\n",
    "print(\"For n_clusters =\", n_clusters, \"The average silhouette_score is :\",\n",
    "      silhouette_avg)\n",
    "\n",
    "# Compute the silhouette scores for each sample\n",
    "sample_silhouette_values = silhouette_samples(X, cluster_labels)\n",
    "\n",
    "y_lower = 10\n",
    "for i in range(n_clusters):\n",
    "    # Aggregate the silhouette scores for samples belonging to\n",
    "    # cluster i, and sort them\n",
    "    ith_cluster_silhouette_values = \\\n",
    "        sample_silhouette_values[cluster_labels == i]\n",
    "\n",
    "    ith_cluster_silhouette_values.sort()\n",
    "\n",
    "    size_cluster_i = ith_cluster_silhouette_values.shape[0]\n",
    "    y_upper = y_lower + size_cluster_i\n",
    "\n",
    "    color = cm.nipy_spectral(float(i) / n_clusters)\n",
    "    ax1.fill_betweenx(np.arange(y_lower, y_upper),\n",
    "                      0,\n",
    "                      ith_cluster_silhouette_values,\n",
    "                      facecolor=color,\n",
    "                      edgecolor=color,\n",
    "                      alpha=0.7)\n",
    "\n",
    "    # Label the silhouette plots with their cluster numbers at the middle\n",
    "    ax1.text(-0.05, y_lower + 0.5 * size_cluster_i, str(i))\n",
    "\n",
    "    # Compute the new y_lower for next plot\n",
    "    y_lower = y_upper + 10  # 10 for the 0 samples\n",
    "\n",
    "ax1.set_title(\"The silhouette plot for the various clusters.\")\n",
    "ax1.set_xlabel(\"The silhouette coefficient values\")\n",
    "ax1.set_ylabel(\"Cluster label\")\n",
    "\n",
    "# The vertical line for average silhouette score of all the values\n",
    "ax1.axvline(x=silhouette_avg, color=\"red\", linestyle=\"--\")\n",
    "plt.savefig(\"silhoutte_plot_k3.png\", dpi=300, bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "iris[\"cluster\"] = cluster_labels\n",
    "current_palette = sns.color_palette()[0:3]\n",
    "sns.scatterplot(data=iris,\n",
    "                x=\"petal_length\",\n",
    "                y=\"petal_width\",\n",
    "                hue=\"cluster\",\n",
    "                palette=current_palette)\n",
    "plt.savefig(\"iris_3_class_agglomerative.png\", dpi=300, bbox_inches=\"tight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
